QT项目中ui_.h文件详解

在QT工程中的mainwindow.h常见的几行:

namespace Ui { 

    class MainWindow; 

    ......

private: 

    Ui::MainWindow *ui;

在QT工程中的mainwindow.cpp常见的几行:

#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) : 

    QMainWindow(parent), 

    ui(new Ui::MainWindow) 

    ui->setupUi(this); 

ui文件实际是xml格式的,Qt编译时,先用uic工具将mainwindow.ui编译生成ui_mainwindow.h,转化为c++类,就是 Ui::MainWindow。头文件的部分相关代码:

QT_BEGIN_NAMESPACE

class Ui_MainWindow

{

public:

    QWidget *centralWidget;

    QRadioButton *radioButton;

    QMenuBar *menuBar;

    QToolBar *mainToolBar;

    QStatusBar *statusBar;



void setupUi(QMainWindow *MainWindow)

{

if (MainWindow->objectName().isEmpty())

            MainWindow->setObjectName(QStringLiteral("MainWindow"));

        MainWindow->resize(402, 302);

        centralWidget = new QWidget(MainWindow);

        ......

void retranslateUi(QMainWindow *MainWindow)

{

   MainWindow->setWindowTitle(QApplication::translate("MainWindow", "MainWindow", nullptr));

   radioButton->setText(QApplication::translate("MainWindow", "RadioButton", nullptr));

    }

}

namespace Ui {

    class MainWindow: public Ui_MainWindow {};

}

QT_END_NAMESPACE

Note: ui_*.h文件不要修改,因为修改了也没用,下次 uic 工具会自动生成这个文件,之前的修改就被覆盖了。

从代码中可以看出在.ui文件中拖拽的控件是Ui::MainWindow类的public成员。

setupUi()成员函数,其参数是个QMainWindow指针。实际上,不拖控件而直接在mainwindow.cpp中建立控件的方法就相当于自己写setupUi函数的部分代码。

retranslateUi():重新翻译界面,如果做了多国语言翻译,这个函数可以将界面翻译成其他语言显示。

Note:QT_BEGIN_NAMESPACE 和QT_END_NAMESPACE两个宏,其实是空宏。

QMetaObject::connectSlotsByName(MainWindow)是根据信号和槽函数名称等实现自动关联的关键函数。

Ui命名空间中的 MainWindow 与继承自QMainWindow的 MainWindow 不是一回事,前者仅继承Ui_MainWindow,后者的private成员ui指针指向前者。

Note:如果在如图所示的位置将顶层窗口的名称修改了

假设修改为communication,则在MainWindow.h文件中的

namespace Ui { 

           class MainWindow; 

       } 

       class MainWindow;要修改成class communication;

在MainWindow.cpp文件中的

 MainWindow::MainWindow(QWidget *parent) : 

    QMainWindow(parent), 

    ui(new Ui::MainWindow)

    {……}

    ui(new Ui::MainWindow)需要修改为ui(new Ui::communication)

之所以这样修改是应为在设计器中修改了顶层窗口的名称则编译后生成的ui_*.h文件中的类名称也发生了相应的变化,如果不做上述相关修改将出现编译出错的情况。

  • 9
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]的代码显示了一个QtUI文件(mainwindow.ui)的部分相关代码。其,`MainWindow->resize(402, 302);`是设置主窗口的大小。然而,引用\[1\]的代码只是UI文件的一部分,它需要在main.cpp进行编译和执行才能显示出来。引用\[2\]的代码是一个示例的main.cpp文件,它包含了创建并显示主窗口的代码。因此,`mainwindow.resize`的调用应该在main.cpp文件进行,而不是在UI文件。 在main.cpp文件,可以通过创建MainWindow对象并调用其resize函数来设置主窗口的大小。例如,可以在main函数添加以下代码: ```cpp int main(int argc, char *argv\[\]) { QApplication a(argc, argv); MainWindow w; w.resize(402, 302); // 设置主窗口的大小 w.show(); return a.exec(); } ``` 这样,当程序运行时,主窗口的大小将被设置为402x302像素。 #### 引用[.reference_title] - *1* [QT项目ui_.h文件详解](https://blog.csdn.net/qq_30725967/article/details/127224071)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [QT(5.9.9 )creator做一个播放器遇到的问题与解决](https://blog.csdn.net/qq_42060887/article/details/124304079)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [PYTHON 人脸识别](https://blog.csdn.net/MOIKA1/article/details/124831456)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值