`
暴风雪
  • 浏览: 388741 次
  • 性别: 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自定义对话框及采用信号槽机制与主窗口交互的应用程序示例

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

    QT自定义dialog提示窗

    本项目“QT自定义dialog提示窗”着重于通过纯代码方式创建对话框,无需使用UI文件。下面将详细阐述相关知识点。 1. **自定义对话框的创建**: 在QT中,可以继承`QDialog`类来创建自定义对话框。`QDialog`是QT中的...

    Qt自定义对话框Demo

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

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

    总的来说,"自定义对话框实现综合案例"是一个实用的教程,涵盖了Qt框架下的核心对话框设计和实现技术,对于提升开发者在GUI应用领域的专业技能具有显著帮助。通过实践这个案例,不仅可以掌握自定义对话框的基本用法...

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

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

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

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

    Qt无边框对话框实现

    总结起来,通过利用Qt提供的窗口标志、鼠标事件处理以及自定义行为,我们可以构建一个无边框对话框,同时保留并实现常见的系统边框功能。这个过程涉及对Qt窗口系统和事件处理机制的深入理解,以及对C++编程技巧的...

    基于QT的字体对话框实现

    "基于QT的字体对话框实现"是一个典型的UI开发实例,它涉及到Qt框架的使用,以及如何创建和定制对话框来满足特定的功能需求。Qt是一个跨平台的C++库,广泛应用于桌面、移动和嵌入式系统的开发,提供了丰富的UI组件和...

    自定义对话框Messagebox帮助

    本文将围绕“自定义对话框Messagebox帮助”这一主题,深入解析其核心概念、实现方法以及应用场景,同时提供示例代码解析,帮助读者更好地理解和运用自定义对话框。 ### 自定义对话框的概念 自定义对话框是一种用于...

    标准对话框和自定义对话框所练习的代码

    总之,这个项目提供了一个很好的机会去深入理解Qt库中的对话框机制,如何利用内置函数调用标准对话框,以及如何通过自定义对话框扩展功能。无论是对于初学者还是经验丰富的开发者,这都是一个有价值的实践课题,有助...

    qml 用item自定义dialog 对话框

    在Qt Quick QML中,自定义对话框是创建用户界面时常见的需求,它允许开发者根据应用的特定需求设计...通过理解并实践上述步骤,你将能够构建出具有吸引力和交互性的自定义对话框,提升你的Qt Quick应用程序的用户体验。

    Qt-自定义对话框实现对主窗口数据的实时画图

    该文件夹创建了一个项目,利用定时器定时更新Widget的坐标条形框数据,点击Widget按钮可弹出一个非模态对话框,该对话框可实现对Widget窗口的坐标数据进行实时画图。

    火山PC创建自定义对话框例子

    而"自定义对话框"可能是项目的源代码文件夹,包含了实现自定义对话框功能的C++、C#或其他语言的源代码文件。"tb"可能是工具栏或控件库的文件,提供了额外的UI元素供开发者使用。 在实际开发过程中,除了编写代码,...

    Qt 文件选择对话框

    在Qt中,你可以通过创建`QFileDialog`的对象并调用其方法来打开文件对话框。例如,以下代码将显示一个用于打开文件的对话框: ```cpp QFileDialog dialog(this); if (dialog.exec() == QFileDialog::Accept) { ...

    QT 自定义提示框 MessageBox

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

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

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

    pythonocc自定义对话框

    本篇文章将详细介绍如何结合`pythonocc`和`PyQt`,通过`qtdesigner`工具设计一个自定义对话框,并实现点击一个点后弹出该对话框的功能。 首先,我们需要了解`qtdesigner`。它是Qt开发环境的一部分,允许我们使用...

    QT实例 基本对话框

    QT提供了QDialog类,可以继承该类来创建自定义对话框,以满足特定的用户交互需求。开发者可以自由添加控件,设置布局,并实现自己的业务逻辑。 以上是关于QT基本对话框的一些关键知识点,理解并熟练掌握这些对话框...

    Qt对话框标题栏修改技巧

    本文将详细介绍如何在Qt中实现对话框标题栏的隐藏、透明化等自定义操作,帮助开发者更好地定制自己的应用程序。 #### 隐藏对话框标题栏 在Qt中,可以通过设置窗口标志(`window flags`)来隐藏对话框的标题栏。...

Global site tag (gtag.js) - Google Analytics