在QFileDialog布局中调整按钮小部件的大小

时间:2013-12-13 09:55:14

标签: qt qt5

如何更改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();

2 个答案:

答案 0 :(得分: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);
    }
}

答案 1 :(得分:0)

由于我最近遇到了这个问题,使用Qt5 - 由于某些原因在Qt4中它起作用 - 你需要确保Qt从布局()返回不是Null。

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