`
暴风雪
  • 浏览: 377906 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

通过QT实现自定义的对话框

    博客分类:
  • QT
 
阅读更多

自定义了一个QDialog,并通过信号和槽的机制实现了控件之间的通信,细节见注释



 

//对话框头文件
#ifndef FUCKQT_H
#define FUCKQT_H

#include<QDialog>

class QCheckBox;
class QLabel;
class QLineEdit;
class QPushButton;

class phuckDlg :public QDialog{

	//如果需要在对话框类中自定义信号和槽,则需要在类内添加Q_OBJECT
	Q_OBJECT
public:
	//构造函数,析构函数
	phuckDlg(QWidget *parent = NULL);
	~phuckDlg();

	//在signal和slots中定义这个对话框所需要的信号。
signals:
	//signals修饰的函数不需要本类实现。他描述了本类对象可以发送那些求助信号
	void findNext(const QString& str1, Qt::CaseSensitivity cs);
	void findPrevious(const QString& str1, Qt::CaseSensitivity cs);

//slots必须用private修饰
private slots:
	void findClicked();
	void enableFindButton(const QString& str);

//申明这个对话框需要哪些组件
private:
	QLabel *label1;
	QLineEdit *edit1;
	QCheckBox *box1, *box2;
	QPushButton *findButton, *closeButton;
};

#endif // FUCKQT_H

 

//定义了控件和控件之间的关联,以及控件的位置
#include<QtGui>
#include<QLabel>
#include<QLineEdit>
#include<QCheckBox>
#include<QPushButton>
#include<QHBoxLayout>
#include "fuckqt.h"
phuckDlg::phuckDlg(QWidget *parent)
	: QDialog(parent)
{

	//初始化控件对象
	//tr是把当前字符串翻译成为其他语言的标记
	//&后面的字母是用快捷键来激活控件的标记,例如可以用Alt+w激活Find &what这个控件
	label1 = new QLabel(tr("Find &what:"));
	edit1 = new QLineEdit;
	//设置伙伴控件
	label1->setBuddy(edit1);
	box1 = new QCheckBox(tr("Mach &case"));
	box2 = new QCheckBox(tr("Search &background"));
	findButton = new QPushButton(tr("&find"));
	findButton->setDefault(true);
	findButton->setEnabled(false);

	closeButton = new QPushButton(tr("close"));

	//连接信号和槽
	connect(edit1, SIGNAL(textChanged(const QString&)), this, SLOT(enableFindButton(const QString&)));
	connect(findButton, SIGNAL(clicked()), this, SLOT(findClicked()));
	connect(closeButton, SIGNAL(clicked()), this, SLOT(close()));

	//设置控件位置
	QHBoxLayout *topLeftLayout = new QHBoxLayout;
	topLeftLayout->addWidget(label1);
	topLeftLayout->addWidget(edit1);

	QVBoxLayout *leftLayout = new QVBoxLayout;
	leftLayout->addLayout(topLeftLayout);
	leftLayout->addWidget(box1);
	leftLayout->addWidget(box2);

	QVBoxLayout *rightLayout = new QVBoxLayout;
	rightLayout->addWidget(findButton);
	rightLayout->addWidget(closeButton);
	rightLayout->addStretch();

	QHBoxLayout *mainLayout = new QHBoxLayout;
	mainLayout->addLayout(leftLayout);
	mainLayout->addLayout(rightLayout);

	this->setLayout(mainLayout);

	setWindowTitle(tr("phuck"));

	setFixedHeight(sizeHint().height());
}

void phuckDlg::findClicked(){
	QString text1 = edit1->text();
	Qt::CaseSensitivity cs;
	if (box1->isChecked()){
		cs = Qt::CaseSensitive;
	}
	else{
		cs = Qt::CaseInsensitive;
	}

	//判断发送什么信号
	if (box2->isChecked()){
		emit findPrevious(text1, cs);
	}
	else{
		emit findNext(text1, cs);
	}
}


void phuckDlg::enableFindButton(const QString& str){
    findButton->setEnabled(!str.isEmpty());
}

phuckDlg::~phuckDlg()
{

}

 

//测试这个类
#include "fuckqt.h"
#include <QtWidgets/QApplication>

int main(int argc, char *argv[])
{
	QApplication a(argc, argv);
	phuckDlg *dialog = new phuckDlg();
	dialog->show();
	return a.exec();
}

 

  • 大小: 2.9 KB
分享到:
评论

相关推荐

    基于Qt的自定义对话框及其调用方法

    建立模态对话框,用于设置主窗口的表格行数和列数,并用于删除对话框对象,释放内存。 (2)设置表头标题 在对话框编辑表头标题后,主窗口获取编辑之后的表头标题,对话框以模态形式存在。 (3)定位单元格 在...

    Qt自定义对话框Demo

    在Qt中,你可以创建自定义对话框(Custom Dialog)来满足特定需求,这允许你设计一个完全符合应用程序风格的对话框。通常,自定义对话框是通过创建一个继承自`QDialog`的自定义类,并在这个类中定义对话框的外观和...

    QT自定义对话框及其调用应用程序示例

    在一个应用程序设计中,为了实现一些特定的功能,必须设计自定义对话框。自定义对话框的设计一般从QDialog继承,并且可以采用UI设计器可视化地设计对话框。对话框的调用一般包括创建对话框、传递数据给对话框、显示...

    QT自定义对话框及采用信号槽机制与主窗口交互的应用程序示例

    在一个应用程序设计中,为了实现一些特定的功能,必须设计自定义对话框。自定义对话框的设计一般从QDialog继承,并且可以采用UI设计器可视化地设计对话框。对话框的调用一般包括创建对话框、传递数据给对话框、显示...

    基于QT的自定义对话框界面

    基于通用三方开源的Qt界面库的基础之上,高效、省时的帮你完成个性化界面。用户基于上述开发系统,实现个性化的...对界面的自定义拖动的实现。 本源码基于网络源码升级而成,后续大家有好的建议可以留言或者升级分享!

    QT自定义dialog提示窗

    纯代码编写提示窗,无UI文件。是https://blog.csdn.net/sinat_33419023/article/details/110009514 代码对应的项目文件

    QT 自定义提示框 MessageBox

    QT 自定义提示框 Qt 自定义提示框 类似QMessageBox https://blog.csdn.net/qq_37373742/article/details/127402276?spm=1001.2014.3001.5502 为什么需要设计自定义提示框呢? 1.Qt自带的提示框样式单一; 2.提示框...

    Qt无边框对话框实现

    Qt无边框界面实现, 支持拖拽移动、四边拖动大小,双击放大等系统边框支持的功能,模态对话框支持抖动效果。

    qml 用item自定义dialog 对话框

    qml 用item自定义dialog 对话框 很好用的一个自定义对话框

    利用Qt实现自定义标题栏功能(自定义最大化、最小化、关闭等功能).zip

    利用Qt实现自定义标题栏功能(自定义最大化、最小化、关闭等功能),自定义标题栏,可以自己设计按键的大小,图标,位置,能够和背景更加统一,详细内容可参考文章:...

    pythonocc自定义对话框

    使用pythonocc为库,以pyqt中的qtdesigner为工具设计一个自定义对话框。 实现了点击 一个点弹出自定义对话框

    QT 可复用对话框C++——可自定义标题和内容及按钮文本的标准通用对话框

    QT 可复用对话框C++——可自定义标题和内容及按钮文本的标准通用对话框

    自定义对话框实现综合案例

    qt框架下创建模态对话框和非模态对话框综合案列,对实际业务开发有一定的参考价值。

    QT实现的类似QQ的头像选择框

    用QT实现的类似QQ的头像选择框,能够在右侧实时显示截取效果,代码很简单就三个类,需要自己新建工程。效果图压缩包内有。有问题欢迎咨询,共同学习进步。

    Qt实现自定义按钮的状态

    本资源利用Qt实现了按钮的状态变化,鼠标移动到按钮上按钮改变颜色,离开变回原来状态,点击按钮弹出一个对话框

    【QT】09 对话框文章代码

    自定义对话框、消息对话框及其他标准对话框 博客地址:https://blog.csdn.net/qq_36926037/article/details/123697304

    QT实现登录窗口

    QTableWidget是QT对话框设计中常用的显示数据表格的控件。 QTableWidget继承于类QTableView,所以在学习QTableWidget之前可以先看一下QTableWidget,他们两者的区别是:QTableView可以使用自定义的数据模型来显示...

    QT一个简单的例子,对话框点击事件

    QT一个简单的例子 对话框 点击事件 你懂的

    Qt基本对话框及实现各个功能的文档

    Qt基本对话框及实现各个功能的文档。 包括: 1.标准文件对话框 2.标准颜色对话框 3.标准字体对话框 4.标准输入对话框 5.消息对话框类 6.自定义消息对话框类

    自定义对话框Messagebox帮助

    自定义对话使用帮助,请按帮助信息说明进行使用!

Global site tag (gtag.js) - Google Analytics