打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
在Qt标准FileDialog对话框中插入控件

Qt的界面大多是MVC的组织模式。其中控制部分是对外的接口,而界面则不对外,就是说,用户只能在控制部分的接口中实现对Qt类的通信,如果你要是想改变界面的显示,则没有提供相关的接口。

我在实际工作要在QFileDialog中增加一个控件。在QFileDialog定义中可以发现Q_DECLARE_PRIVATE(QFileDialog),这句话就是在QFileDialog中定义了界面的联系。查看宏的定义可以发现d_ptr就是QFileDialog可访问的界面指针。这样就可以对界面元素进行操作了。下面代码,在QFileDialog底部加一个Checkbox

 方法一:

CFileDialogWithCheck::CFileDialogWithCheck(QWidget* parent, const QString & caption, const QString & directory, const QString & filter) : QFileDialog(parent,caption,directory,filter)

{
 checkBox = new QCheckBox(this);
checkBox->setText("Include Original Document");
 checkBox->setCheckState(Qt::Checked);
QFileDialogPrivate *pprivate = reinterpret_cast(d_ptr);
 pprivate->qFileDialogUi->gridLayout->addWidget(checkBox,4,1);
setAcceptMode(QFileDialog::AcceptOpen);
setFileMode(QFileDialog::ExistingFile);
}


方法二:

1.
    QFileDialog dialog;
    foreach (QObject *obj, dialog.children())
    {
        if (obj->objectName() == "fileNameLabel")
        {
            QLabel *label = qobject_cast<QLabel *>(obj);
            label->setText("hello");
        }
    }

2.
    QFileDialog dialog;
    if (QLabel *label = dialog.findChild<QLabel *>("fileNameLabel"))
    {
        label->setText("hello");
    }
    dialog.exec();


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
qt控件的使用
QPushButton && QLabel
Qt 5——对话框QDialog
QT 创建文件夹||选择一个文件(夹)||拷贝 删除文件或文件夹
Qt学习之路(15): Qt标准对话框之QFileDialog
Qt中打开保存文件的文件过滤器怎么设置
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服