2. qt写带有槽的登录界面(c++)

发布于:2025-03-18 ⋅ 阅读:(25) ⋅ 点赞:(0)

        我们在1.Qt写简单的登录界面(c++)_c++ qt 设计一个简单界面-CSDN博客中写了个简单的登录界面,但没有槽,在这里写一个带有槽的界面。

1.代码

代码目录如下:

main.cpp的代码如下:

#include "MainWindow.h"
#include <QtWidgets/QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

MainWindow.h的代码如下:

#pragma once

#include <QtWidgets/QMainWindow>
#include "ui_MainWindow.h"
#include <QLabel>
#include <QtWidgets>

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

public slots: // 或者直接在类定义中定义槽函数。
    void handleMySignal();

private:
    Ui::MainWindow *ui;
};

MainWindow.cpp的代码如下:

#include "MainWindow.h"

#include <QLabel>
#include <QtWidgets>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    ,ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this->setWindowTitle("The first UI display of wang");//设置窗口标题
    this->setWindowIcon(QIcon("D:\\AI\\vs\\ui\\Demo1\\Demo1\\buttonss\\ss.png"));//设置窗口图标
    //this->setWindowFlag(Qt::FramelessWindowHint);//设置纯净标题
    this->resize(800, 600);//设置大小
    this->setStyleSheet("background-color:white");//设置背景颜色
    
    // --------------------按钮设置-------------------
    QPushButton* btn = new QPushButton(" register", this);
    btn->setGeometry(350, 400, 120, 50);
    btn->setStyleSheet("background-color:rgb(8,189,253);border-radius:5px;color:white");//设置背景,按钮样式,字体颜色

    // 建立关联当点击pushButton时信号clicked 发送给槽on_pushButton_clicked
    btn->connect(btn, &QPushButton::clicked, this, &MainWindow::handleMySignal);

}

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


void MainWindow::handleMySignal()
{
    this->setWindowTitle("wang");//设置窗口标题
    
}

运行结果如下:

点击按钮后的结果如下:

我们发现左上角的名称变为了"wang".

2.注意事项

在该代码中,可能会出现 ui(new Ui::MainWindow) 的报错,解决办法如下:

1.打开项目中的MainWindow.ui文件如下:

修改上图中右下角的"objectName"右边的名称为"MainWindow",然后保存该文件,退出后进入vs重新生成解决方案,这个时候还会继续报错。

2.进入MainWindow.h文件

如下图所示,将工具栏的debug修改为Release,然后将该文件最下面一行修改为Ui::MainWindow *ui;(自动生成的代码不是这样的,需要修改成这样)。

最后再次生成解决方案,就不会报错了。