qt学习第六课:改变形状的对话框

在qt中最常用看的可改变形状的对话框有两种:扩展对话框,多页对话框。

在本次学习中,我们将学习制作一个扩展对话框


这个是没有扩展的对话框

qt学习第六课:改变形状的对话框_第1张图片


下面是扩展了得对话框

qt学习第六课:改变形状的对话框_第2张图片


由上面的图可以看出,首先我们需要以下的控件

1.pushButton 3个 分别对应OK Cancle More

2.Group Box 3个   分别对应上面的3个 XXX key

3.6个Label 对应上面的6个标签

4.6个组合框 

5.两个竖直间隔符

创建好这些按钮控件后,就把控件拖成上图的样子,然后对每个Group box进行网格布局, 对右边的button采用竖直布局,然后再对整体采用网络布局,最后调整好窗口大小就是了。

然后就是为里面的各个控件修改ObjectName,以便在后面使用。



做完这些过后就可以为以上的控件关联槽和信号了。

首先是 okButton->clicked()->accept();

cancleButton->clicked()->reject();


然后为MoreButton关联下面两个群组框,信号选择为(toggled),槽选择为(setVisable)。


最后再为UI中的控件关联一个tab顺序就完成了ui的添加了,最后将其保存为sortdialog.ui就可以了。


下面就是添加一个对话框来继承这个ui类和QDialog类,来实现消息的响应以及数据的更新等。


具体代码如下:

#ifndef SORTDIALOG_H
#define SORTDIALOG_H
#include
#include"ui_sortdialog.h"

class SortDialog : public QDialog,public Ui::SortDialog
{
    Q_OBJECT
public:
    SortDialog(QWidget* parent = 0);
    //设置组合框的范围
    void setColumnRange(QChar first ,QChar last);
};

#endif // SORTDIALOG_H


.cpp

#include "sortdialog.h"
#include


SortDialog::SortDialog(QWidget* parent):QDialog(parent)
{

    setupUi(this);

    seconddartGroupBox->hide();
    tetiaryGroupBox->hide();
    layout()->setSizeConstraint(QLayout::SetFixedSize);


    setColumnRange('A' , 'Z');
}

void SortDialog::setColumnRange(QChar first, QChar last){

    primaryColumnCombo->clear();
    seconddaryColumnCombo->clear();
    tetiaryColumnCombo->clear();

    seconddaryColumnCombo->addItem(tr("None"));
    tetiaryColumnCombo->addItem(tr("None"));

    QChar ch = first;

    while (ch <= last) {
        primaryColumnCombo->addItem(QString(ch));
        seconddaryColumnCombo->addItem(QString(ch));
        tetiaryColumnCombo->addItem(QString(ch));

        ch = ch.unicode() + 1;
    }
}



最后在main中调用中这个类就可以实现窗口的显示了,具体代码如下:

//#include "mainwindow.h"
#include 
#include"sortdialog.h"
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
  //  MainWindow w;
   // w.show();

    SortDialog* dialog = new SortDialog;
    dialog->setColumnRange('C' , 'F');
    dialog->show();

    return a.exec();
}


这段代码就完成了对上面图片那样的功能的显示,并且设置了他的范围为C-F。


你可能感兴趣的:(c++)