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

相关推荐
倒头就睡的小比特2 天前
算法竞赛C++常用的STL
c++·算法
weilx12342 天前
C++笔记-文件IO-<fcntl.h>
c++
Smileyqp沛沛2 天前
前端?C++ ?较大差异基础罗列
c++·基础·前端转c++
C语言小火车2 天前
C/C++ 为什么需要编译器?
开发语言·c++
旖旎夜光2 天前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控
吞下星星的少年·-·2 天前
C++ 萌新语法入门篇
c++·算法比赛
霍霍的袁2 天前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio
another heaven2 天前
【算法/C++ MD5算法能否逆解码?原理、C++实现与同类哈希算法对比】
c++·算法·哈希算法
程序猿编码2 天前
告别改源码适配模型:纯 C++ 可配置 LLM 推理引擎,全格式全结构兼容
c++·大模型·llm·推理引擎
此生决int2 天前
深入理解C++系列(20)——C++11(下)
开发语言·c++