【问题标题】:Resize the button widget in QFileDialog layout在 QFileDialog 布局中调整按钮小部件的大小
【发布时间】:2013-12-13 09:55:14
【问题描述】:

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

【问题讨论】:

    标签: qt qt5


    【解决方案1】:

    您可以只使用样式表:

    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);
        }
    }
    

    【讨论】:

    • 如何使用 setStyleSheet 更改 QFileDialog 的字体属性?如果有人可以发布代码,那就太好了。
    • @Bhush 您需要更具体一些。什么字体?按钮?还是整个对话?
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-11
      • 2015-08-16
      相关资源
      最近更新 更多