内容目录
示例
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