这节主要讲可改变形状对话框中的,可扩展对话框。
先利用QT designer快速设计出一个大概的原型,
具体步骤参照书上。然后运行之后的样子应该是这样的:
按了more之后,下面一整块就都没了 与所希望的不符合,所以,我们也要像上节一样,创建一个头文件,利用多重继承来实现功能。
sortdialog.h:
#ifndef SORTDIALOG_H
#define SORTDIALOG_H
#include<QDialog>
#include"ui_sortdialog.h"
class SortDialog:public QDialog,public Ui_Sort
{
Q_OBJECT
public:
SortDialog(QWidget *parent=0);//构造函数,
void setColumnRange(QChar first,QChar last);//可根据在电子制表软件选择的列初始化这些组合框的内容,
};
#endif // SORTDIALOG_H
sortdialog.cpp
#include<QtGui>
#include"sortdialog.h"
SortDialog::SortDialog(QWidget *parent)
:QDialog(parent){
setupUi(this);//初始化通过designer建立的对话框
secondaryGroupBox->hide();//把第二个 第三个隐藏起来
tertiaryGropBox->hide();
layout()->setSizeConstraint(QLayout::SetFixedSize);//使得用户不得修改大小,去掉这一行,就可改变大小,且不美观
setColumnRange('A','Z');
}
void SortDialog::setColumnRange(QChar first, QChar last){
primaryColumnCombo->clear();//清空三个键,防止前面的操作影响到后面的
secondaryColumnCombo->clear();
tertiaryColumnCombo->clear();
secondaryColumnCombo->addItem(tr("None"));//第二三键插入none项
tertiaryColumnCombo->addItem(tr("None"));
primaryColumnCombo->setMinimumSize(secondaryColumnCombo->sizeHint());
//QWidget::sizeHint()返回布局系统视图认同的理想大小,如果不设置主键和二三键的大小一样,系统会自动分配给主键
//框的大小比二三键框窄。为了避免出现不一样,所以要设置一下
QChar ch=first;
while(ch<=last){//依次添加项进去,
primaryColumnCombo->addItem(QString(ch));
secondaryColumnCombo->addItem(QString (ch));
tertiaryColumnCombo->addItem(QString (ch));
ch=ch.unicode()+1;
}
}
main;
#include<QApplication>
#include"sortdialog.h"
int main(int argc,char *argv[]){
QApplication app(argc,argv);
SortDialog *dialog=new SortDialog;
dialog->setColumnRange('C','F');
dialog->show();
return app.exec();
}
运行结果: