有时候,需要对不同用户显示不同的内容,也就是高级用户有高级选型显示。
比如,实现如下扩展对话框
文章图片
1. 用QT desinger创建对话框且添加各元素,如下图
文章图片
注意moreButton, 的checkable属性勾选,如下,
文章图片
2. 建立信号槽机制,如下,
1)添加OK, Cancel的信号槽
文章图片
2)类似的添加moreButton与两个组合框的显示
文章图片
最后,显示信号槽设置如下,
文章图片
3. main.cpp
#include "sortdialog.h"
#include
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
SortDialog *sortDlg = new SortDialog;
sortDlg->setColumnRange('C','F');
sortDlg->show();
return a.exec();
}
4. sortdialog.h
#ifndef SORTDIALOG_H
#define SORTDIALOG_H
#include
namespace Ui {
class SortDialog;
}
class SortDialog : public QDialog
{
Q_OBJECT
public:
explicit SortDialog(QWidget *parent = nullptr);
~SortDialog();
void setColumnRange(QChar first, QChar last);
private:
Ui::SortDialog *ui;
};
#endif // SORTDIALOG_H
5. sortdialog.cpp
#include "sortdialog.h"
#include "ui_sortdialog.h"
SortDialog::SortDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::SortDialog)
{
ui->setupUi(this);
ui->secondaryGroupBox->hide();
ui->tertiaryGroupBox->hide();
layout()->setSizeConstraint(QLayout::SetFixedSize);
setColumnRange('A', 'Z');
}
SortDialog::~SortDialog()
{
delete ui;
}
void SortDialog::setColumnRange(QChar first, QChar last)
{
ui->primaryColumnCombo->clear();
ui->secondaryColumnCombo->clear();
ui->tertiaryColumnCombo->clear();
ui->secondaryColumnCombo->addItem(tr("None"));
ui->tertiaryColumnCombo->addItem(tr("None"));
ui->primaryColumnCombo->setMinimumSize(
ui->secondaryColumnCombo->sizeHint());
QChar ch = first;
while(ch <= last) {
ui->primaryColumnCombo->addItem(QString(ch));
ui->secondaryColumnCombo->addItem(QString(ch));
ui->tertiaryColumnCombo->addItem(QString(ch));
ch = ch.unicode() + 1;
}
}
【QT|QT---创建对话框3(形状可变对话框的实现)】
推荐阅读
- Qt|Qt之QTreeView的简单使用(含源码+注释)
- Qt学习之路|Qt项目-安防监控系统(解码编码转码)
- Qt探索之旅|Qt实现思维导图功能(二)
- QT|Qt状态机的使用
- C++|Qt-Q_OBJECT宏及控件提升导致的类重定义问题
- C++学习|C++从文件中提取英文单词
- Qt学习之路|Qt项目-安防监控系统(欢迎登录注册)
- Qt学习之路|Qt项目-安防监控系统(MVC设计模式)
- C语言学习|C语言做一个简易的登陆验证(功能)界面