2013-12-13 2 views
2

Как изменить размер кнопки в QFileDialog? Я попробовал приведенный ниже код; он компилируется, но приложение неожиданно выходит, если я пытаюсь загрузить диалог файла.Изменение размера виджета кнопки в макете QFileDialog

Пожалуйста, дайте мне знать, что происходит не так. Я новичок в QT. :(

 QFileDialog *fdiag = new QFileDialog(); 
     QGridLayout *glayout = static_cast <QGridLayout*>(fdiag->layout()); 

     QLayoutItem *li = glayout->itemAtPosition(3,3); 

     QRect buttonRect = li->geometry() ; 
     int newHeight = buttonRect.height() + 20; 
     int newWidth = buttonRect.height() + 20; 
     buttonRect.setHeight(newHeight); 
     buttonRect.setWidth(newWidth); 
     li->setGeometry(buttonRect); 

     fdiag->resize(720,480); 
     fdiag->setWindowTitle("Media Folder"); 

     fdiag->exec(); 

ответ

4

Вы можете просто использовать таблицу стилей:

QFileDialog *fdiag = new QFileDialog; 
fdiag->setStyleSheet("QPushButton{min-height: 40px; min-width: 200px;}"); 

Или, если вы хотите изменить определенную кнопку только:

QDialogButtonBox *box = fdiag->findChild<QDialogButtonBox*>(); 
if(box) 
{ 
    QPushButton *button = box->button(QDialogButtonBox::Open); 
    if(button) 
    { 
     button->setMinimumHeight(40); 
     button->setMinimumWidth(200); 
    } 
} 
+0

Отлично, что сработало. Благодарю. – Bhush

+0

Как изменить свойства шрифта для QFileDialog с помощью setStyleSheet? Если можно опубликовать код, это будет здорово. – Bhush

+0

@Bhush Вы должны быть более конкретными. Шрифт для чего? Кнопки? Или весь диалог? – thuga

0

Как я получил эту проблему в последнее время, с Qt5 - по некоторым причинам в Qt4 это сработало - вам нужно убедиться, что Qt возвращает не Null из макета().

Вам нужно инициализируйте диалоговое окно «Система» с помощью опции QFileDialog::DontUseNativeDialog, например. с dlg->setOption(QFileDialog::DontUseNativeDialog, true);

Смежные вопросы