目录

一、UI文件

二、uic.exe生成ui_xxx.h

三、例子

1、界面

2、ui文件

3、ui_qmywidget.h

4、qmywidget.h

5、qmywidget.cpp

三、界面继承问题

1、基类

2、派生类


一、UI文件

        .ui通常是指Qt设计师设计出来的界面文件的后缀,它本质上是一个标准XML格式的文本文件,需要通过uic工具将其转换为项目中可用的ui_xxx.h头文件。使用时ui是一个指向这个界面类的指针,u i − >一般就是用来访问这个界面类里面的控件。

二、uic.exe生成ui_xxx.h

QT的UI如何加入到程序中来?xxx.ui文件是一个xml文件,描述了ui属性,包括ui路径,名称,尺寸等信息,这个文件可由ui设计工具qt designer生成;但是要想在程序中使用ui,需要通过uic.exe和xxx.ui生成一个ui_xxx.h文件。cmd中cd到xxx.ui所在的路径,输入 uic.exe xxx.ui -o ui_xxx.h。

三、例子

1、界面

2、ui文件

qmywidget.ui

3、ui_qmywidget.h

/********************************************************************************
** Form generated from reading UI file 'qmywidget.ui'
**
** Created: Thu Jul 21 22:07:19 2022
**      by: Qt User Interface Compiler version 4.8.4
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/#ifndef UI_QMYWIDGET_H
#define UI_QMYWIDGET_H#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QHeaderView>
#include <QtGui/QPushButton>
#include <QtGui/QWidget>QT_BEGIN_NAMESPACEclass Ui_QMyWidget
{
public:QPushButton *pushButton;void setupUi(QWidget *QMyWidget){if (QMyWidget->objectName().isEmpty())QMyWidget->setObjectName(QString::fromUtf8("QMyWidget"));QMyWidget->resize(400, 300);pushButton = new QPushButton(QMyWidget);pushButton->setObjectName(QString::fromUtf8("pushButton"));pushButton->setGeometry(QRect(130, 120, 91, 61));retranslateUi(QMyWidget);QMetaObject::connectSlotsByName(QMyWidget);} // setupUivoid retranslateUi(QWidget *QMyWidget){QMyWidget->setWindowTitle(QApplication::translate("QMyWidget", "QMyWidget", 0, QApplication::UnicodeUTF8));pushButton->setText(QApplication::translate("QMyWidget", "PushButton", 0, QApplication::UnicodeUTF8));} // retranslateUi};namespace Ui {class QMyWidget: public Ui_QMyWidget {};
} // namespace UiQT_END_NAMESPACE#endif // UI_QMYWIDGET_H

4、qmywidget.h

#ifndef QMYWIDGET_H
#define QMYWIDGET_H#include <QWidget>
#include "ui_qmywidget.h"class QMyWidget : public QWidget
{Q_OBJECTpublic:QMyWidget(QWidget *parent = 0);~QMyWidget();private:Ui::QMyWidget ui;
};#endif // QMYWIDGET_H

5、qmywidget.cpp

#include "qmywidget.h"QMyWidget::QMyWidget(QWidget *parent): QWidget(parent)
{ui.setupUi(this);
}QMyWidget::~QMyWidget()
{}

三、界面继承问题

可以使用不同的ui文件进行界面代码的继承,然后将ui.setupUI(this)写到一个虚函数中去。

1、基类

#ifndef QMYWIDGET_H
#define QMYWIDGET_H#include <QWidget>
#include "ui_qmywidget.h"class QMyWidget : public QWidget
{Q_OBJECTpublic:QMyWidget(QWidget *parent = 0);~QMyWidget();virtual void initUI();private:Ui::QMyWidget ui;
};#endif // QMYWIDGET_H
#include "qmywidget.h"QMyWidget::QMyWidget(QWidget *parent): QWidget(parent)
{}QMyWidget::~QMyWidget()
{}void QMyWidget::initUI()
{
ui.setupUi(this);
}
QMyWidget *pWidget=new QMyWidget();
pWidget->InitUI();

2、派生类

#ifndef QMYWIDGET_H
#define QMYWIDGET_H#include <QWidget>
#include "ui_qmyderivedwidget.h"class QMyDerivedWidget : public QMyWidget
{Q_OBJECTpublic:QMyDerivedWidget (QWidget *parent = 0);~QMyDerivedWidget ();virtual void initUI();private:Ui::QMyDerivedWidget ui;
};#endif // QMYWIDGET_H
#include "qmywidget.h"QMyDerivedWidget::QMyDerivedWidget(QWidget *parent): QMyWidget(parent)
{}QMyDerivedWidget::~QMyWidget()
{}void QMyDerivedWidget::initUI()
{ui.setupUi(this);
}
QMyWidget *pWidget=new QMyDerivedWidget();
pWidget->InitUI();

Qt界面UI文件的使用与界面继承问题相关推荐

  1. Qt项目UI文件中新添加的控件在代码中不识别的问题

    ui->XXXX 在UI界面中新添加了控件,但是在代码中怎么也不出现,或者划红线 我看不少人说备份删除文件再添加,或者关闭QT再打开... 其实只要右键项目清除构建,然后重新构建就可以了, 这有 ...

  2. Qt中ui文件的使用

    Qt(73) 版权声明:本文为博主原创文章,未经博主允许不得转载. 用designer设计的*.ui文件可以通过uic工具转换为*.h文件(在编译时也会自动生成这样一个ui_*.h文件),有了这个.h ...

  3. QT中ui文件生成关联的C++类

    在VS2008中给对话框资源添加关联的C++类时,可通过右键菜单"添加类"直接添加关联的C++类,但QT中不支持这样的操作.在QT中在创建界面ui时,可手动也可自动创建ui文件关联 ...

  4. 【Qt】Visual Studio中无法打开Qt中UI文件

    00. 目录 文章目录 00. 目录 01. 问题描述 02. 开发环境 03. 问题分析 04. 问题解决 05. 预留 01. 问题描述 使用Visual Studio打开纯Qt项目之后, 点击Q ...

  5. Vs + Qt 编译 .ui 文件

    使用Vs + Qt 是Vs对于Ui 文件会默认调用 uic 编译,但是在写代码的时候显示ui_XXX.h文件无法识别,其实这个时候代码是可以通过编译的,就是看起来不爽. 网上很多方法是用 对于.ui文 ...

  6. 如何将qt的.ui文件转换成.py文件(pycharm+pyuic5+Qtdesigner)以及遇到的问题(自己的记录不是教程)

    注意:本篇博客不是教程,我只是把自己整个过程记录了下来,其中遇到一些问题,如果出现相同问题可进行参考. 目录 一.安装pyqt5 二.创建两个 external tool 1.Qtdesigner 2 ...

  7. VS+QT双击ui文件用Designer打开时出现未指定错误/无法打开XX.ui文件

    在VS与Qt交互中,刚刚会在VS中使用Designer打开某ui文件,工作机制其实是vs利用到了qt vs tools 工具调用designer.exe打开某ui文件 下面介绍的方法一就是重置qt v ...

  8. Qt的ui文件无法拖拽放置控件

    问题:用Clion开发Qt时新建Qt Ui Class中产生的ui文件用QtDesigner打开后无法在QtDesigner中将控件拖入QMainWindow类窗口中. 原因:生成的ui文件中不包含有 ...

  9. Python将Qt的ui文件转成py代码文件

    将.ui文件转化为.py文件: 方法一: python -m PyQt5.uic.pyuic demo.ui -o demo.py 方法二: pyuic5 demo.ui -o demo.py

最新文章

  1. 条款22: 尽量用“传引用”而不用“传值”
  2. 理解什么是MyBatis?
  3. windows server2008 双线接入设置(电信联通双线)
  4. Struts流程分析+源码分析
  5. C#中的预处理指令详解
  6. 【CyberSecurityLearning 7】AD域
  7. #每日一题:小计算器(模拟)
  8. Python数据结构学习笔记——栈
  9. Table中Family和Qualifier的关系与区别(转载)
  10. 做个中国清官网,有人感兴趣吗
  11. 淮阴工学院计算机答辩,淮阴工学院关于做好2014级研究生学位论文答辩工作的通知...
  12. 怎样用mysql查询测试_如何测试数据库查询优化器
  13. OpenShift 4 - 部署Mirror Registry并复制Image
  14. 使用Java实现面向对象编程(1)
  15. linux子网掩码和ip计算,子网掩码的计算 - winglok的个人页面 - OSCHINA - 中文开源技术交流社区...
  16. Codeforces Round #453 (Div. 1)
  17. 使用正则表达式实现网页爬虫的思路详解
  18. paip.验证码识别---序列号的反转
  19. AlphaGo 开源项目研究(1)
  20. python mysql扩展,python-sql-faker:轻量级、易拓展的数据库智能填充开源库(Python实现版)...

热门文章

  1. 局域网监控软件推荐(什么局域网监控软件好)
  2. 【MacOS】navicat安装及mysql连接(失败解决方案)
  3. 搭建ADG过程中复制报错 RMAN-03009 ORA-03113
  4. matlab语音去除白噪声_基于的MATLAB的语音加噪去噪处理
  5. 大客户市场:阿里云、腾讯云、华为云“贴身肉搏”
  6. 在eclipse中写java项目,简单使用hsqldb数据库--菜鸟教程
  7. 读者提问:为什么 jsp 还没有被淘汰?
  8. python 知乎接口_Python日记——用Django做一个简易的知乎日报API
  9. SIM808调试笔记(GNSS获取经纬度,GPRS数据上传到服务器)
  10. 谈谈新闻写作技巧的训练