如何在QT3中向QFileDialog窗口添加复选框?

时间:2018-03-21 13:23:24

标签: c++ checkbox qfiledialog qt3

我在向QFileDialog窗口添加额外的复选框时遇到问题。我正在谈论在使用QFileDialog::getSaveFileName期间打开的同一个窗口。

我知道如何在QT5中执行此操作,我需要创建一个子类并设置选项QFileDialog::DontUseNativeDialog

如何在QT3中执行此操作?

因为我没有QFileDialog::DontUseNativeDialog。在QT3中,选择的方法较少。

是否有相似的方法或完全不同的方法来添加此复选框?

1 个答案:

答案 0 :(得分:0)

虽然静态方法(如getSaveFileName)使用本机对话框,但您仍然可以继承QFileDialog并使用addWidgets方法在文件类型下添加任何小部件组合框,即在对话框的底部。

这是一个非常简单的示例,带有一个复选框:

#include <qfiledialog.h>
#include <qcheckbox.h>
class FileDialog : public QFileDialog
{
public:
  FileDialog() : QFileDialog(0)
  {
        QCheckBox* checkbox = new QCheckBox(this);
        checkbox->setText("Check me!!!");
        addWidgets( 0, checkbox, 0 );
  }
};

您可以在main

中对其进行测试
#include <qapplication.h>
int main(int argc, char * argv[])
{
  QApplication a(argc, argv);

  FileDialog d;    
  d.exec();

  return a.exec();
}

要在最右边的位置添加一个复选框,在“取消”按钮下方,可以尝试子类化QPushButton(这是预期的类型),在其中显示一个复选框,覆盖{{1使用空实现,因此根本不会绘制按钮(但复选框将会被绘制)。

paintEvent

这样,复选框可以添加为#include <qcheckbox.h> #include <qpushbutton.h> #include <qlayout.h> class CheckBox : public QPushButton { QCheckBox* checkbox; public: CheckBox(QWidget * parent) : QPushButton(parent) { QGridLayout * box = new QGridLayout(this); checkbox = new QCheckBox(this); checkbox->setText("Check this!!!"); box->addWidget(checkbox, 0, 0, Qt::AlignRight); } void paintEvent ( QPaintEvent * ){} }; 的第三个参数:

addWidgets

并显示在对话框的右下角。