Qt Widgets Designer Form Class文件的解读
内容目录

示例

chatwindows.h

#ifndef CHATWINDOW_H
#define CHATWINDOW_H 

#include <QWidget>

// 前置声明,Ui::ChatWindow是通过designer自动生成的,因此需要先声明
namespace Ui {
class ChatWindow;
}

class ChatWindow : public QWidget
{
    Q_OBJECT
///‌元对象系统支持‌:Q_OBJECT宏启用了‌Qt的元对象系统,允许对象进行内省(introspection),即对象能够在运行时查询自身的属性和方法。
//信号与槽机:Q_OBJECT宏使得类能够使用Qt的信号和槽机制,这是一种用于对象间通信的机制,允许一个对象的信号在特定事件发生时触发另一个对象的槽函数。
/// 动态属性系:通过Q_OBJECT宏,类可以支持Qt的动态属性系统,允许在运行时添加、查询和删除属性。
/// 事件和事件过滤:使用Q_OBJECT宏的类可以更容易地集成Qt的事件处理系统,包括安装事件过滤器和处理自定义事件。
/// 翻译和国际:Q_OBJECT宏支持Qt的翻译系统,使得字符串可以更容易地被翻译成不同的语言。

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

private slots:
    void on_pushButton_clicked();

private:
    Ui::ChatWindow *ui;
};

#endif // CHATWINDOW_H

chatwindow.cpp

#include "chatwindow.h"
#include "ui_chatwindow.h" // 自动生成的类
#include <QTabBar>
#include <QLabel>
ChatWindow::ChatWindow(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::ChatWindow)
{
    ui->setupUi(this); //设置当前类的UI。相当于把该类的指针传递到Ui::ChatWindow中进行界面的修改
}

ChatWindow::~ChatWindow()
{
    delete ui; // 释放指针
}

void ChatWindow::on_pushButton_clicked()
{
}

ui_chatwindow.h

该头文件是qt designer自动生成的,如下

/********************************************************************************
** Form generated from reading UI file 'chatwindow.ui'
**
** Created by: Qt User Interface Compiler version 6.7.2
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/

#ifndef UI_CHATWINDOW_H
#define UI_CHATWINDOW_H

#include <QtCore/QVariant>
#include <QtWidgets/QApplication>
#include <QtWidgets/QTabWidget>
#include <QtWidgets/QWidget>

QT_BEGIN_NAMESPACE

class Ui_ChatWindow
{
public:
    QTabWidget *tabWidget;

    void setupUi(QWidget *ChatWindow) // 将传进来的类进行修改而已,原理so easy
    {
        if (ChatWindow->objectName().isEmpty())
            ChatWindow->setObjectName("ChatWindow");
        ChatWindow->resize(895, 560);
        ChatWindow->setContextMenuPolicy(Qt::ContextMenuPolicy::NoContextMenu);
        tabWidget = new QTabWidget(ChatWindow);
        tabWidget->setObjectName("tabWidget");
        tabWidget->setGeometry(QRect(50, 30, 731, 471));
        tabWidget->setTabPosition(QTabWidget::TabPosition::West);

        retranslateUi(ChatWindow);

        QMetaObject::connectSlotsByName(ChatWindow);
    } // setupUi

    void retranslateUi(QWidget *ChatWindow)
    {
        ChatWindow->setWindowTitle(QCoreApplication::translate("ChatWindow", "Form", nullptr));
    } // retranslateUi

};

namespace Ui {
    class ChatWindow: public Ui_ChatWindow {}; //继承
} // namespace Ui

QT_END_NAMESPACE

#endif // UI_CHATWINDOW_H
上一篇
下一篇