.ui文件

作者: downdemo | 来源:发表于2018-08-06 10:28 被阅读17次
  • 将在QtCreator下写好的一个项目导入到VS,可运行。双击Generated Files中的ui_xxx.h文件,提示无法打开文档。它已被重命名、删除或移动。
无法打开文档
  • 但在文件夹中是可以找到此文件的
对应的ui_xxx.h文件
  • 新建一个ui文件
新建ui文件
  • 右键并编译
选择编译
  • 编译成功
编译成功
  • 在项目的GeneratedFiles文件夹下可以发现新的ui_test.h文件
编译生成的ui_test.h
  • 但在VS的工程目录中仍看不到
Generated Files下无新生成的ui_test.h
  • 右键Generated Files,添加现有项,将所有的ui_xxx.h导入即可
手动添加 选择头文件
  • 添加完成后,双击新添加的头文件即可打开
双击ui_dlg.h
  • 之前无法打开的头文件可以直接右键移除
移除无法打开的文件后
  • 窗口应当通过.ui文件编辑修改,每次修改后运行,都将重新编译.ui,生成新的ui_xxx.h文件。因此即使在ui_xxx.h中可以通过代码修改窗口控件,但不会修改.ui文件,而反过来,一旦修改过.ui文件,则会重新生成ui_xxx.h,通过代码做的修改就会被覆盖
  • 若要通过代码修改,应当在类的头文件和.cpp文件中修改。在头文件的private作用域中添加控件的声明
// #include <QVBoxLayout>
// #include <QMenuBar>

private:
    Ui::dlg *ui;
    // 以下为添加控件,记住添加对应的头文件
    QVBoxLayout* layout;
    QMenuBar* menuBar;
    QAction* actionNew;
  • 在.cpp文件中的构造函数添加实现(添加菜单栏)
ui->setupUi(this);
// 以下为添加的实现
layout = new QVBoxLayout(this);
menuBar = new QMenuBar(this);
menuBar->setGeometry(QRect(0, 0, 400, 24));
QMenu* menu = menuBar->addMenu(tr("&File"));
actionNew = menu->addAction(tr("&New"));
actionNew->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_N));
layout->setMenuBar(menuBar);
setLayout(layout);

例子

  • 新建一个Qt GUI项目
  • 右键解决方案目录中的Form Files,添加新建项Qt Widget Form File
  • 为了和空项目区分,添加一个PushButton作为对比
  • 修改objectNametest
  • 保存并关闭设计界面,编译.ui文件并把所有的ui_xxx.h文件导入到Generated Files,可以在源码中看到,实际上生成的ui_Widget.h里就是一个类,类名为Ui_test,最终在namespace Ui中有一个test类,这些test的来源就是之前修改的objectName
  • 为了使用ui文件的界面设计,添加一个头文件test.h
// file "test.h"

#ifndef TEST_H
#define TEST_H

#include <QMainWindow>

namespace Ui {
    class test;
}

class test : public QMainWindow
{
    Q_OBJECT

public:
    explicit test(QWidget *parent = 0);
    ~test();

private:
    Ui::test *ui;
};

#endif // TEST_H
  • 再添加源文件test.cpp
#include "test.h"
#include "ui_Widget.h"

test::test(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::test)
{
    ui->setupUi(this);
}

test::~test()
{
    delete ui;
}
  • main.cpp中包含test.h后,新建一个对象,调用show()方法即可显示窗口
// file "main.cpp"
#include "QtGuiApplication2.h"
#include "test.h"
#include <QtWidgets/QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    //QtGuiApplication2 w;
    test w;
    w.show();
    return a.exec();
}
  • 运行结果
  • 要通过代码修改窗口,比如添加一个菜单栏。在test.h的private作用域中添加控件成员,并包含对应的头文件
#ifndef TEST_H
#define TEST_H

#include <QMainWindow>
// 以下为新增的头文件
#include <QVBoxLayout>
#include <QMenuBar>

namespace Ui {
    class test;
}

class test : public QMainWindow
{
    Q_OBJECT

public:
    explicit test(QWidget *parent = 0);
    ~test();

private:
    Ui::test *ui;
    // 以下为新增的成员
    QVBoxLayout* layout;
    QMenuBar* menuBar;
    QAction* actionNew;
};

#endif // TEST_H
  • test.cpp的构造函数中添加实现
#include "test.h"
#include "ui_Widget.h"

test::test(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::test)
{
    ui->setupUi(this);
    // 以下为新增的实现
    layout = new QVBoxLayout(this);
    menuBar = new QMenuBar(this);
    menuBar->setGeometry(QRect(0, 0, 400, 24));
    QMenu* menu = menuBar->addMenu(tr("&File"));
    actionNew = menu->addAction(tr("&New"));
    actionNew->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_N));
    layout->setMenuBar(menuBar);
    setLayout(layout);
}

test::~test()
{
    delete ui;
}
  • 运行,多出了File菜单栏

相关文章

  • PyQt5编程(4) :利用QtDesigner设计程序界面(2

    前一篇文章介绍直接调用ui文件,本文介绍将ui文件转成py文件生成窗口的编程方式。要将MyForm.ui生成ui_...

  • 使用UI文件

    1.创建UI文件 mainwindow.ui,文件内容如下 2.在命令行把ui文件转换为py文件 3.注意这个py...

  • PYQT使用

    简单快速创建UI界面 保存成*.ui文件,Qt Designer设计出来的文件默认为.ui文件,里面包含的类css...

  • PyCharm+Qt Designer+PyUIC安装配置教程

    使用Qt Designer来设计界面,生成ui文件 使用PyUIC将ui文件转成py文件 Qt Designer和...

  • AppWorker教程-公共函数

    公共函数 AppWorker平台通常的逻辑代码都是在ui文件对应的ui.js里编写,ui.js是随ui文件自动生成...

  • .ui文件

    将在QtCreator下写好的一个项目导入到VS,可运行。双击Generated Files中的ui_xxx.h文...

  • Pycharm QT相关扩展设置

    UI to PY 设置扩展工具,将Qt的ui文件转换为py文件 QtDesigner 设置扩展工具,打开QtDes...

  • 自用命名规范

    UI命名规范 普通UI命名 控件类型_ui名称 UI绑定脚本命名 控件类型简称_ui绑定脚本名称_bind 文件规...

  • 使用mint-ui库---picker

    1,cd + 项目文件夹 进入项目文件夹 2,安装mint-ui npm install mint-ui --s...

  • UI提供的icon文件如何引用到项目

    关于UI提供的icon文件如何引用到vue+elementui项目中 一、找到UI提供的icon文件  找到包含下...

网友评论

      本文标题:.ui文件

      本文链接:https://www.haomeiwen.com/subject/ocjwvftx.html