欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

QT学习笔记2:可变形的对话框——扩展对话框

程序员文章站 2022-03-09 22:51:09
...

Qt常见的可变形的的对话框有两种——扩展对话框和多页对话框。

 

扩展对话框

做个简单的示范,在Qt designer里面设计如下,这里为了便于理解,将组件最简单化,设置一个pushButton,放在顶部,一个GroupBox,里面放了两个单选按钮(这里随意)

然后设置主窗口为垂直布局

QT学习笔记2:可变形的对话框——扩展对话框

QT学习笔记2:可变形的对话框——扩展对话框

然后开始进行真正实现扩展的步骤

1.将”更多”按钮的属性中的 checkable 属性勾选上

QT学习笔记2:可变形的对话框——扩展对话框

checkable 属性的含义简单来说,就是将按钮变成切换按钮,即按钮有两种状态(打开/关闭),类似于电灯开关,按一下灯开,再按一下就关闭;如果不设置,按钮为触发按钮,即只有一种状态(产生某种特定效果),按下去就回弹,比如门铃按钮,每次按动就会触发门铃。

2.在代码中将’GroupBox’ 组件设置为 hide

	ui.moreGroupBox->hide();

这里将可扩展的部分隐藏,相当于默认窗口刚打开时不显示扩展内容

3.设置窗口自适应大小

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

这里很重要,只有设置了自适应大小,窗口才能随着扩展组件的显示与隐藏改变形状,才能产生窗口扩展了的效果

4.设置按钮到对应扩展组件的信号/槽关系

这里可以在designer里设置,也可以在代码中设置,这里给出代码

	connect(ui.moreButton, SIGNAL(toggled(bool)), ui.moreGroupBox, SLOT(setVisible(bool)));

简单解释一下就是由这个‘moreButton’发送'toggled'信号到‘moreGroupBox’对象处,触发‘setVisible’槽函数,根据按钮状态对组件状态进行更改。

注:toggled 用于判断按钮状态(打开/关闭),‘setVisible’ 用于设置组件是否可见。

 

至此,扩展对话框设置完毕,效果如下

QT学习笔记2:可变形的对话框——扩展对话框

QT学习笔记2:可变形的对话框——扩展对话框

再次点击即可关闭,更多细节可以自己去慢慢琢磨,比如按钮可以根据打开或者关闭分别显示‘更多’和‘收起’。

 

 

.h文件

#pragma once

#include <QDialog>
#include "ui_TestWgt.h"

class TestWgt : public QDialog
{
	Q_OBJECT

public:
	TestWgt(QWidget *parent = Q_NULLPTR);

private:
	Ui::TestWgt ui;
};

.cpp文件

#include "TestWgt.h"
#include <QLayout>

TestWgt::TestWgt(QWidget *parent)
	: QDialog(parent)
{
	ui.setupUi(this);

	ui.moreGroupBox->hide();
	this->layout()->setSizeConstraint(QLayout::SetFixedSize);

	connect(ui.moreButton, SIGNAL(toggled(bool)), ui.moreGroupBox, SLOT(setVisible(bool)));

}