2013-12-13 148 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

如何使用setStyleSheet更改QFileDialog的字体属性?如果可以发布代码,那就太好了。 – Bhush

+0

@Bush你需要更具体。什么字体?按钮?或者整个对话? – thuga

0

正如我最近买了这个问题,与Qt5 - 由于Qt4中的某些原因,它的工作原理 - 您需要确保Qt从layout()返回不为NULL。

您需要用选项QFileDialog::DontUseNativeDialog初始化系统对话框,例如,与dlg->setOption(QFileDialog::DontUseNativeDialog, true);

相关问题