Qt Dialog 界面设计之 FindDialog

这篇具有很好参考价值的文章主要介绍了Qt Dialog 界面设计之 FindDialog。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、FindDialog效果图

二、实现代码

H文件:

CPP文件:

三、信号和槽

四、补充说明


一、FindDialog效果图

Qt Dialog 界面设计之 FindDialog

二、实现代码

代码的逻辑顺序:

         1、创建并初始化窗口部件。
         2、添加布局,把创建好的控件放入布局当中。
         3、设置控件的属性。
         4、建立信号-槽之间的连接。
         5、实现自定义槽。

H文件:

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>
#include <QLabel>
#include <QLineEdit>
#include <QCheckBox>

namespace Ui {
class Dialog;
}

class Dialog : public QDialog
{
    Q_OBJECT

public:
    explicit Dialog(QWidget *parent = 0);
    ~Dialog();

signals:

void findPrevious(QString text,Qt::CaseSensitivity cs);
void findNext(QString text,Qt::CaseSensitivity cs);

private slots:
void EnableFindButton(const QString &text);
void FindClicked();


private:
    Ui::Dialog *ui;

private:
    QLabel *m_label;
    QLineEdit *m_lineEdit;
    QCheckBox *m_caseCheckBox;
    QCheckBox *m_backwardCheckBox;
    QPushButton *m_findButton;
    QPushButton *m_closeButton;

};

#endif // DIALOG_H

CPP文件:

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

Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);

    //1、初始化成员变量,并简单设置属性
    
    //"&" 符号表示快捷键 alt + w 可以激活
    m_label = new QLabel("Find &what:");
    m_lineEdit = new QLineEdit(this);
    //buddy 伙伴,当使用alt + w 快捷键时(原本应该焦点聚焦到m_label标签上)
    //但是设置行编辑器为m_label标签的伙伴时,焦点会聚焦到行编辑器上
    m_label->setBuddy(m_lineEdit);
    m_caseCheckBox = new QCheckBox("Match &case");
    m_backwardCheckBox = new QCheckBox("Search &backward");
    m_findButton = new QPushButton("&Find");
    //设置按钮m_findButton为默认按钮
    //默认按钮:当用户按下Enter键时能够按下对应的按钮
    m_findButton->setDefault(true);
    //禁用m_findButton 按钮表现为灰色,且不能和用户发生交互操作
    m_findButton->setEnabled(false);
    m_closeButton = new QPushButton("Close");

    //2、添加布局,把创建好的控件放入布局当中

    //构建左上面的布局,水平布局
    QHBoxLayout *lefTopLayout = new QHBoxLayout;
    lefTopLayout->addWidget(m_label);
    lefTopLayout->addWidget(m_lineEdit);
    //构建左侧的布局,垂直布局
    QVBoxLayout *leftLayout = new QVBoxLayout;
    leftLayout->addLayout(lefTopLayout);
    leftLayout->addWidget(m_caseCheckBox);
    leftLayout->addWidget(m_backwardCheckBox);
    //构建右侧布局,垂直布局
    QVBoxLayout *rightLayout = new QVBoxLayout;
    rightLayout->addWidget(m_findButton);
    rightLayout->addWidget(m_closeButton);
    //添加弹簧
    rightLayout->addStretch();
    //定义整个窗口的布局,把之前的布局都添加到这个整体布局当中
    QHBoxLayout *mainLayout = new QHBoxLayout;
    mainLayout->addLayout(leftLayout);
    mainLayout->addLayout(rightLayout);
    //设置窗口布局
    this->setLayout(mainLayout);

    //3、设置控件的属性

    //设置窗口的标题
    this->setWindowTitle("Find");
    //sizeHint可以返回一个窗口部件的理想尺寸
    this->setFixedHeight(sizeHint().height());

    //4、建立信号-槽之间的连接

//    connect(m_lineEdit,&QLineEdit::textChanged,this,&EnableFindButton);
//    connect(m_findButton,&QPushButton::clicked,this,&FindClicked);
//    connect(m_closeButton,&QPushButton::clicked,this,&Dialog::close);
    connect(m_lineEdit,SIGNAL(textChanged(QString)),this,SLOT(EnableFindButton(QString)));
    connect(m_findButton,SIGNAL(clicked(bool)),this,SLOT(FindClicked()));
    connect(m_closeButton,SIGNAL(clicked(bool)),this,SLOT(close()));

}

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

//5、实现自定义槽
void Dialog::FindClicked()
{
   //获取文本编辑框的数据
   QString text = m_lineEdit->text();
   // Qt::CaseSensitivity 为枚举类型, 可取值Qt::CaseSensitive 和 Qt::CaseInsensitive, 表示匹配的灵敏度。
   //比较字符串的时候 Qt::CaseSensitive区分大小写,Qt::CaseInSensitive不区分大小写
   Qt::CaseSensitivity cs = m_caseCheckBox->isChecked()? Qt::CaseInsensitive : Qt::CaseInsensitive;
   //根据m_backwardCheckBox的状态发送不同的信号
   if(m_backwardCheckBox->isChecked())
   {
       emit findPrevious(text,cs);
   }
   else {
       emit findNext(text,cs);
   }
}
void Dialog::EnableFindButton(const QString &text)
{
    m_findButton->setEnabled(true);
}

三、信号和槽

1、一个信号可以连接多个槽,在发射这个信号的时候,会以不确定的顺序一个接着一个调用这些槽。

2、多个信号可以连接同一个槽,无论发射哪一个信号,都会调用这个槽。

3、一个信号可以与另外一个信号相连接。

4、连接可以被移除。

        a、当删除对象时,Qt会自动移除和这个对象相关的所有连接。

        b、调用移除连接函数 disconnect(sender,SIGNAL(signal),receiver,SLOT(slot))。

四、补充说明

1、将子布局添加到父布局中时,子布局对象就会自动重定义自己的父对象。

2、Qt在删除父对象的时候自动删除其所有的子对象。

3、可以通过setTabOrder()函数设置,按下Tab键的便利顺序文章来源地址https://www.toymoban.com/news/detail-417142.html

到了这里,关于Qt Dialog 界面设计之 FindDialog的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Qt设计开发】GUI界面设计开发

      本文是我在学习QT的GUI界面设计过程当中的心得和学习笔记,在学习时已经有C, C++,Python的基础。文章附上了学习的代码,仅供大家参考。如果有问题,有错误欢迎大家留言。此外,博主还有另外几篇文章,分别关于 Python基础知识 、 Python的具体应用 、 C语言指针结构体

    2024年02月02日
    浏览(51)
  • Qt用户图形界面设计应用(闹钟)

    什么是Qt Qt 是一个跨平台的 C++ 图形用户界面库,由挪威 TrollTech 公司于 1995 年底出品,并于 2008年6月17日被NOKIA公司收购,以增强NOKIA公司在跨平 台软件研发方面的实力,更名为Qt Software。 Qt的优点 基本上, Qt 同 X Window 上的 Motif, Openwin, GTK 等图形界 面库 和 Windows 平台上的

    2024年02月08日
    浏览(62)
  • QT day1 (图形界面设计)

    要求:  功能函数模块  做出如下效果图:  

    2024年02月08日
    浏览(38)
  • 设计qt界面并通过代码显示

    方法 1: 在 ui 文件所在的文件夹中,按快捷键 Shift+鼠标右键,在弹出的菜单栏中选择“在此处打开 Powershell\\\" 在终端输入指令:pyuic5 -o xxx.py py xxx.ui 例子:pyuic5 -o 界面.py untitled.ui 方法 2:通过 python 代码直接调用终端输入命令 方法 1.界面生成的代码 + python 代码 方法 2.ui 文件

    2024年02月09日
    浏览(40)
  • Qt界面设计——侧边栏隐藏和滑出

    在日常项目中,界面布局上经常使用到侧边栏的方式,在侧边栏放置控件进行复合使用,可以实现子功能界面的隐藏和滑出,效果展示如下: 界面控件很简单,主界面QWidget,侧边栏也用一个QWidget和一个按钮QPushbutton来进行组合。通过点击按钮来显示和隐藏侧边栏。主要用到

    2024年02月11日
    浏览(47)
  • qt中使用 ui 文件进行界面设计

    目录 1、创建 Qt 应用 ​2、项目创建成功 3、直接点击打开 mainwindow.ui 文件 4、随便从左边侧边栏拖拽一个空间到 界面设计区域 5、在右侧边栏右键点击 pushButton 控件,点击转到槽 6、根据实际需要选择对应的信号,我这里方便演示选择 clicked()信号,直接点击 OK 7、自动在

    2024年02月04日
    浏览(43)
  • qt设计一个简单的注册登录界面

    实现代码:

    2024年02月14日
    浏览(42)
  • qt 如何设计好布局和漂亮的界面。

      进群领取 qt 开发学习资料以及技术交流   在下方 ↓↓↓↓↓↓↓↓ ​       曾几何时,我们都在黑框框下度过,我们受够了被黑框框支配的恐惧,想要跳出去,去看看外面,我们听够了类似于界面只是皮肤,背后的代码才是王道的话语,当你觉得黑框框已经满足不了

    2024年02月15日
    浏览(43)
  • 【解决QT设计出的界面不显示中文】

    问题概述:简单做了一个界面,输入界面的时候,按道理说,当我按下我设置的yes_Button的时候应该会弹出一个用中文提示的对话框,但是我想提示的中文变成了乱码 首先我分析是不是我的QT软件的一些配置没配好,在网上搜一些资料还是解决不了问题 最后通过询问老师解决

    2024年02月11日
    浏览(30)
  • Python QT5设计UI界面教程

    简介:PyQT5开发常用知识,零基础上手,需配合我之前写的博文,配置好QT设计工具和ui文件转py文件的工具。博文为:使用Python PyQt5实现一个简单的图像识别软件;页面效果如下: 1.设计菜单栏 Containers——Tab Widget; 2.横向排布  可以自动水平对齐 3.文本框和选择框 4.日期输入

    2024年01月17日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包