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. 字体对话框

相关推荐
mahuifa几秒前
混合开发环境---使用编程AI辅助开发Qt
人工智能·vscode·qt·qtcreator·编程ai
冷眼看人间恩怨5 分钟前
【Qt笔记】QDockWidget控件详解
c++·笔记·qt·qdockwidget
红龙创客15 分钟前
某狐畅游24校招-C++开发岗笔试(单选题)
开发语言·c++
Lenyiin17 分钟前
第146场双周赛:统计符合条件长度为3的子数组数目、统计异或值为给定值的路径数目、判断网格图能否被切割成块、唯一中间众数子序列 Ⅰ
c++·算法·leetcode·周赛·lenyiin
yuanbenshidiaos2 小时前
c++---------数据类型
java·jvm·c++
十年一梦实验室2 小时前
【C++】sophus : sim_details.hpp 实现了矩阵函数 W、其导数,以及其逆 (十七)
开发语言·c++·线性代数·矩阵
taoyong0012 小时前
代码随想录算法训练营第十一天-239.滑动窗口最大值
c++·算法
这是我583 小时前
C++打小怪游戏
c++·其他·游戏·visual studio·小怪·大型·怪物
fpcc3 小时前
跟我学c++中级篇——C++中的缓存利用
c++·缓存
呆萌很3 小时前
C++ 集合 list 使用
c++