Qt Dialog 界面设计之 Sort(扩展对话框)

一、SortDialog效果图

二、实现代码

H文件:

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>

namespace Ui {
class Dialog;
}
class Dialog : public QDialog
{
    Q_OBJECT
public:
    explicit Dialog(QWidget *parent = 0);
    ~Dialog();
    //设置checkBox的值,参加排序的列名。
    void SetColumnRange(QChar first,QChar last);

signals:

private:
    Ui::Dialog *ui;    
};

#endif // DIALOG_H

CPP文件:

#include "Dialog.h"
#include "ui_Dialog.h"
#include <QPushButton>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QDialogButtonBox>
#include <QGridLayout>
#include <QSpacerItem>

Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);
    //隐藏第二个和第三个群租框
    ui->secondaryGroupBox->hide();
    ui->tertiaryGroupBox->hide();
    //设置布局大小
    this->layout()->setSizeConstraint(QLayout::SetFixedSize);
    SetColumnRange('A','Z');    
}

Dialog::~Dialog()
{
    delete ui;
}

void Dialog::SetColumnRange(QChar first, QChar last)
{
    //清楚checkBox的值
    ui->primaryColumnCobo->clear();
    ui->secondaryColumnCobo->clear();
    ui->tertiaryColumnCobo->clear();
    //设置checkBox的第一项值
    ui->secondaryColumnCobo->addItem("None");
    ui->tertiaryColumnCobo->addItem("None");
    //设置大小
    ui->primaryColumnCobo->setMinimumSize(ui->secondaryColumnCobo->sizeHint());
    QChar ch = first;
    //设置checkBox的默认值
    while(ch <= last)
    {
        ui->primaryColumnCobo->addItem(QString(ch));
        ui->secondaryColumnCobo->addItem(QString(ch));
        ui->tertiaryColumnCobo->addItem(QString(ch));
        ch = ch.unicode() + 1;
    }
}

四、Qt设计师界面设计

布局设计图:

 信号和槽:

三、关键代码

1、设置布局的SizeConstraint属性

this->layout()->setSizeConstraint(QLayout::SetFixedSize);

没有SizeConstraint属性的结果:

SizeConstraint:该属性值是一个枚举常量,定义了布局的大小约束的模式。它的默认值是QLayout::SetDefaultConstraint。取值如下:

 翻译:

QLayout::SetDefaultConstraint 0 主窗口部件的最小尺寸设置为minimumSize(),除非该窗口部件 已经有一个最小尺寸。
QLayout::SetFixedSize 3 主窗口部件的尺寸设置为sizeHint(),并且不允许改变该窗口部件的尺寸。
QLayout::SetMinimumSize 2 主窗口部件的最小尺寸设置为minimumSize(),并且该窗口部件不能够变得更小。
QLayout::SetMaximumSize 4 主窗口部件的最大尺寸设置为maximumSize(),并且该窗口部件不能够变得更大。
QLayout::SetMinAndMaxSize 5 主窗口部件的最小尺寸设置为minimumSize(),最大尺寸设置为maximumSize()。

补充:

minimumSize():返回此布局的最小大小。这是在符合规格的情况下,布局所能达到的最小尺寸。 返回值不包括QWidget::setContentsMargins()或menuBar()所需的空间。默认实现允许无限调整大小。

maximumSize():返回此布局的最大大小。这是在符合规格的情况下,布局所能够达到的最大的尺寸。返回值不包括QWidget::setContentsMargins()或menuBar()所需的空间。默认实现允许无限调整大小。

2、More按钮

        使用Qt设计师设计界面时,More按钮的checkable属性设置为选中,选中后,Button变成切换按钮(toggle button),可以有两种状态:按下/弹起,默认状况下checkable是不被选中的,Button默认为触发按钮(trigger button),按下去马上弹起来。这时拓展界面不会显示。

3、button的clicked()和toggled(bool)

信号描述
clicked当鼠标左键被按下然后释放时,或者快捷键被释放时触发该信号
clicked[bool]当按钮被第一次按下然后释放时发出信号,并将当前状态传递给外界
toggled按钮的状态发生变化时发出信号,并将当前状态传递给外界
toggled[bool]当按钮的标记状态发生改变时触发信号

4、Spacres

        两个弹簧的高度都设置为0。

四、总结

        当界面比较复杂时,应该代码与Qt设计师相互配合使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值