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

相关推荐
float_com5 分钟前
【STL】stack,deque,queue 基础,应用与操作
c++·stl·极速入门
学习使我变快乐13 分钟前
C++:用类实现链表,队列,栈
开发语言·c++·链表
lmy_t19 分钟前
C++之第十二课
开发语言·c++
tyler-泰勒1 小时前
初始c++:入门基础(完结)
java·开发语言·c++
sinat_276522573 小时前
C++中move的使用
开发语言·c++
Langneer3 小时前
Qt 状态机编程,双层状态机,实现暂停恢复
开发语言·qt
微尘83 小时前
C语言存储类型 auto,register,static,extern
服务器·c语言·开发语言·c++·后端
三玖诶3 小时前
如何在 Qt 的 QListWidget 中为某一行添加点击事件
开发语言·qt
金博客3 小时前
Qt 模型视图(二):模型类QAbstractItemModel
c++·qt6.7.2
InJre3 小时前
QT widgets 窗口缩放,自适应窗口大小进行布局
开发语言·qt·ui