.ui文件相关

目录

ui类生成过程:

提问:


等以后自己熟练了用代码写这些样式内容,尽量用代码写,原因很简单:

用代码写的可以直接修改代码,但是在设计界面修改的东西,电脑没有QC这玩意,还真不好改。就算会XML语法也还要顾及构建的问题。

ui类生成过程:

在创建项目的时候可以选择是否生成.ui文件,一般勾选生成。

找到相应的类的实现模块:

cpp 复制代码
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{

    ui->setupUi(this);
    ui->pushButton_no->setText("hao");
}

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

其实可以看到,.ui文件在这里就作为了一个初始化列表项的存在。

既然能够new,那么就是一个类。

QC在创建项目后的初步构建就会形成build文件夹,在这个文件夹里就能找到对应的ui的.h文件。

在QC中打开:

cpp 复制代码
/********************************************************************************
** Form generated from reading UI file 'widget.ui'
**
** Created by: Qt User Interface Compiler version 5.15.2
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/

#ifndef UI_WIDGET_H
#define UI_WIDGET_H

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

QT_BEGIN_NAMESPACE

class Ui_Widget
{
public:
    QPushButton *pushButton_yes;
    QPushButton *pushButton_no;

    void setupUi(QWidget *Widget)
    {
        if (Widget->objectName().isEmpty())
            Widget->setObjectName(QString::fromUtf8("Widget"));
        Widget->resize(800, 600);
        pushButton_yes = new QPushButton(Widget);
        pushButton_yes->setObjectName(QString::fromUtf8("pushButton_yes"));
        pushButton_yes->setGeometry(QRect(110, 140, 75, 23));
        pushButton_no = new QPushButton(Widget);
        pushButton_no->setObjectName(QString::fromUtf8("pushButton_no"));
        pushButton_no->setGeometry(QRect(210, 140, 75, 23));

        retranslateUi(Widget);

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

    void retranslateUi(QWidget *Widget)
    {
        Widget->setWindowTitle(QCoreApplication::translate("Widget", "Widget", nullptr));
        pushButton_yes->setText(QCoreApplication::translate("Widget", "yes", nullptr));
        pushButton_no->setText(QCoreApplication::translate("Widget", "no", nullptr));
    } // retranslateUi

};

namespace Ui {
    class Widget: public Ui_Widget {};
} // namespace Ui

QT_END_NAMESPACE

#endif // UI_WIDGET_H

提问:

Qtxml 文件什么时候转化为一个 UI 类的?

qmake生成了 debug release 文件夹 Makefile,Makefile.debug, Makefile.release等,但是没有生成ui_XXX类。

执行make/build 的时候,生成了 ui_xxx类! 这个时候,我们的 Qt 在成员初始化列表里面,才能 new ui.然后执行ui->setupUi().

相关推荐
FuckPatience5 小时前
Telerik UI for WPF 值不能为null。参数名:key
ui·wpf
breeze jiang6 小时前
从原生事件到 React 组件化:用状态驱动模型加载进度 UI
前端·react.js·ui
JaneConan1 天前
鸿蒙 ArkUI 深水区:@Watch 和 @Observed,状态变了「自动跑」+ 嵌套对象「深层重绘」
开发语言·后端·ui·harmonyos
施棠海1 天前
Pixel2XML实战:10分钟从设计稿做出一个能拨号的Android拨号盘页面(附完整业务代码)
android·java·ui
施棠海1 天前
设计稿一键变成可运行的Android页面:Pixel2XML全流程UI开发框架实战(附完整源码)
android·ui·架构
Helen_cai1 天前
OpenHarmony 通用状态加载、空页面、错误兜底组件封装(全局业务通用 UI 组件 API23)
开发语言·ui·华为·php·harmonyos
YM52e1 天前
鸿蒙 Flutter BoxDecoration装饰:打造精美UI效果
学习·flutter·ui·华为·harmonyos·鸿蒙
qq_463408421 天前
# 基于 HarmonyOS ArkTS 声明式 UI 构建智能音乐播放器:深色主题圆盘轮播、五 Tab 导航隔离、瀑布流收藏与悬浮迷你播放条实现深度解析
ui·华为·harmonyos
工业HMI实战笔记2 天前
【无标题】
大数据·人工智能·ui·自动化·人机交互·交互
帅次2 天前
Kotlin Flow 与 StateFlow:UI 单向数据流基础
开发语言·ui·kotlin·stateflow·onlifecycle