QT、C++界面设计第三版

1.

main.cpp

cpp 复制代码
#include "widget.h"
#include "form_2.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    Form_2 m;
    QObject::connect(&w,&Widget::my_signal,&m,&Form_2::form2_slots);
    w.show();
    return a.exec();
}

widget.h

cpp 复制代码
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QMessageBox>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void on_ton_2_clicked();

    void on_ton_clicked();

signals:
    void my_signal();

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

form_2.h

cpp 复制代码
#ifndef FORM_2_H
#define FORM_2_H

#include <QWidget>

namespace Ui {
class Form_2;
}

class Form_2 : public QWidget
{
    Q_OBJECT

public:
    explicit Form_2(QWidget *parent = nullptr);
    ~Form_2();

public slots:
    void form2_slots();

private slots:
    void on_label_linkActivated(const QString &link);
    
private:
    Ui::Form_2 *ui;
};

#endif // FORM_2_H

form_2.cpp

cpp 复制代码
#include "form_2.h"
#include "ui_form_2.h"

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

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

void Form_2::form2_slots()
{
    this->show();
}

void Form_2::on_label_linkActivated(const QString &link)
{
    this->close();
}

widget.cpp

cpp 复制代码
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    this->setWindowFlag(Qt::FramelessWindowHint);
    this->setAttribute(Qt::WA_TranslucentBackground);
}

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


void Widget::on_ton_2_clicked()
{
    //弹出一个问题对话框
    int ret=QMessageBox::information(this,
                            "问题信息",
                            "您是否确定要退出",
                            QMessageBox::Yes|QMessageBox::No
                            );
    if(ret==QMessageBox::Yes)
    {
        this->close();
    }
}

void Widget::on_ton_clicked()
{
    if(ui->nameedit->text()=="admin" && ui->passwdedit->text()=="123456")
    {
        //弹出一个信息对话框
        //使用静态成员函数实现
        int ret = QMessageBox::information(this, //父组件
                                "登录信息", //标题
                                "登录成功", //文本
                                QMessageBox::Ok
                                );

        //根据函数的返回值,判断选中的按钮
        if(ret == QMessageBox::Ok)
        {
            this->close();
            emit my_signal();
        }
    }
    else
    {
        //弹出错误对话框
        //1.使用QMessageBox 实例化一个对象 有参构造
        QMessageBox msg(QMessageBox::Critical,   //图标
                         "登录错误",   //标题
                         "账号和密码不匹配,是否重新登录", //文本
                         QMessageBox::Yes | QMessageBox::No, //按钮
                         this //指定父组件
                         );

         //2.调用exec()弹出对话框
         int ret = msg.exec();

         //3.根据用户的选择,执行不同的功能
         if(ret == QMessageBox::Yes)
         {
             ui->nameedit->clear();
             ui->passwdedit->clear();
         }
         else
         {
             this->close();
         }
    }
}

结果

2. 字体对话框

相关推荐
丰锋ff40 分钟前
1.7在Qt窗口中添加右键菜单
开发语言·qt
Titan20241 小时前
Linux网络学习:套接字、UDP的封装与应用
linux·服务器·开发语言·网络·c++
Felven2 小时前
C2. Potions (Hard Version)
c++
Tyler_TXZ2 小时前
C++C语言之——树
c语言·c++·算法·
hansang_IR2 小时前
【记录】「COCI 2024/2025」四道模拟赛/8.13
c++·算法
旖旎夜光2 小时前
LeetCode 30:串联所有单词的子串(滑动窗口) —— 题解
数据结构·c++·算法·leetcode·滑动窗口
星恒随风2 小时前
C++ 红黑树封装(二):迭代器、const_iterator 与 operator[] 完整实现 mymap 和 myset
开发语言·c++·状态模式
小小龙学IT3 小时前
oneTBB 开源并行编程库深度解析:从工作窃取调度器到 flow graph 实战
c++·开源
ShineWinsu4 小时前
对于C++:缓冲区管理的详细解析
linux·c++·面试·编程·笔试·io·缓冲区
h_a_o777oah4 小时前
【算法基础】卡特兰数:递推定义与折线对称公式推导及解题策略
c++·算法·acm·组合数学·卡特兰数·反射原理·动态规划dp