QT_StepByStep(3)--创建一个对话框

  • FINDDIALOG_H 头文件:
#ifndef FINDDIALOG_H
#define FINDDIALOG_H
#include <QtGui/QDialog>
/*声明四个用到的类*/
class QCheckBox;
class QLabel;
class QLineEdit;
class QPushButton;
/*首先定义一个派生类QDialog,基类是FindDialog*/
class FindDialog  : public QDialog
{
/*Q_OBJECT 是宏,定义信号槽的类都要声明这个宏*/
Q_OBJECT
/*构造函数和析构函数*/
public:
FindDialog(QWidget  *parent = 0);
~FindDialog();
/*signals,QT关键字,对信号定义.FindDialog 有两个public 的信号,它可以在特定的时刻发出这两个信号,就这里来说,如果用户点击了Find 按钮,并且选中了 Search  backward ,就会发出 findPrevious() ,否则发出findNext()。*/
signals:
void findNext(const QString &str, Qt::CaseSensitivity  cs);
void findPrevious(const QString &str, Qt::CaseSensitivity  cs);
/*私有槽的定义.*/
private slots:
void findClicked();
void enableFindButton(const  QString &text);
private:
QLabel  *label;
QLineEdit  *lineEdit;
QCheckBox *caseCheckBox;
QCheckBox *backwardCheckBox; 
QPushButton *findButton;
QPushButton *closeButton;
};
#endif // FINDDIALOG_H
  • FindDialog.cpp 函数:
/*QtGui,它包括了QtCore 和 QtGui 模块。是统称,在正式开发的时候用到哪些组件,使能哪些组件*/
#include <QtGui>
#include "finddialog.h"
/*在类的外面定义派生类狗在函数*/
FindDialog::FindDialog(QWidget  *parent): QDialog(parent)
{
label  = new QLabel(tr("Find  &what:"));
lineEdit  = new QLineEdit;
label ->setBuddy(lineEdit);
/*创建了两个 QCheckBox,把默认的按钮设为 findButton,把 findButton 设为不可用——也就是变成灰色的了。*/
 
caseCheckBox = new QCheckBox(tr("Match &case"));
backwardCheckBox = new QCheckBox(tr("Search &backford"));
findButton = new QPushButton(tr("&Find"));
findButton->setDefault(true);
findButton->setEnabled(false);
closeButton = new QPushButton(tr("Close"));
/*connect 语句,用来连接信号槽,当 lineEdit 发出textChanged(const  QString&) 信 号 时, FindDialog 的 enableFindButton(const QString&)函数会被调用。

注意,connect()函数也是 QObject 的,因为我们继承了 QObject,所以能够直接使用。

*/
connect(lineEdit,  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(label);
topLeftLayout->addWidget(lineEdit);
QVBoxLayout  *leftLayout = new QVBoxLayout;
leftLayout->addLayout(topLeftLayout);
leftLayout->addWidget(caseCheckBox);
leftLayout->addWidget(backwardCheckBox);
QVBoxLayout  *rightLayout = new QVBoxLayout;
rightLayout->addWidget(findButton);
rightLayout->addWidget(closeButton);
rightLayout->addStretch();
QHBoxLayout  *mainLayout = new QHBoxLayout;
mainLayout->addLayout(leftLayout);
mainLayout->addLayout(rightLayout);
setLayout(mainLayout);
setWindowTitle(tr("Find"));//设置对话框标题
setFixedHeight(sizeHint().height());
//设置对话框高度,这里调用sizeHint().height())函数为最理想高度
}
 
/*槽函数*/
FindDialog::~FindDialog()
{
}
/*槽函数,首先取出 lineEdit 的输入值;然后判断 caseCheckBox是不是选中。如果 backwardCheckBox 被选中,就 emit(发出)信号 findPrevious(),否则 emit 信号 findNext。*/
void FindDialog::findClicked()
{
QString text = lineEdit->text();
Qt::CaseSensitivity  cs  =  caseCheckBox->isChecked()  ?  Qt::CaseInsensitive  : Qt::CaseSensitive;
if(backwardCheckBox->isChecked()) {
    emit findPrevious(text, cs);
    } else {
    emit findNext(text, cs);
}
}
void FindDialog::enableFindButton(const  QString &text)
{
findButton->setEnabled(!text.isEmpty());
}
  • main.cpp
#include <QApplication>
#include "finddialog.h"
int main(int argc, char *argv[])
{
QApplication  app(argc, argv);
FindDialog  *dialog  = new FindDialog;
dialog->show();
return app.exec();
}

转载于:https://www.cnblogs.com/yechuang/p/4531179.html

资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在当今的软件开发领域,自动化构建与发布是提升开发效率和项目质量的关键环节。Jenkins Pipeline作为一种强大的自动化工具,能够有效助力Java项目的快速构建、测试及部署。本文将详细介绍如何利用Jenkins Pipeline实现Java项目的自动化构建与发布。 Jenkins Pipeline简介 Jenkins Pipeline是运行在Jenkins上的一套工作流框架,它将原本分散在单个或多个节点上独立运行的任务串联起来,实现复杂流程的编排与可视化。它是Jenkins 2.X的核心特性之一,推动了Jenkins从持续集成(CI)向持续交付(CD)及DevOps的转变。 创建Pipeline项目 要使用Jenkins Pipeline自动化构建发布Java项目,首先需要创建Pipeline项目。具体步骤如下: 登录Jenkins,点击“新建项”,选择“Pipeline”。 输入项目名称和描述,点击“确定”。 在Pipeline脚本中定义项目字典、发版脚本和预发布脚本。 编写Pipeline脚本 Pipeline脚本是Jenkins Pipeline的核心,用于定义自动化构建和发布的流程。以下是一个简单的Pipeline脚本示例: 在上述脚本中,定义了四个阶段:Checkout、Build、Push package和Deploy/Rollback。每个阶段都可以根据实际需求进行配置和调整。 通过Jenkins Pipeline自动化构建发布Java项目,可以显著提升开发效率和项目质量。借助Pipeline,我们能够轻松实现自动化构建、测试和部署,从而提高项目的整体质量和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值