如何创建第二个 QT .ui 表单?

Posted

技术标签:

【中文标题】如何创建第二个 QT .ui 表单?【英文标题】:How to create second QT .ui form? 【发布时间】:2019-06-21 17:26:20 【问题描述】:

好吧,我想要的是制作 2 个窗口应用程序(1 个窗口有一个按钮,可以在前一个窗口中打开第二个窗口)

到目前为止,我得到了这个:

    login.h login.cpp login.ui mainwindow.h(这里肯定没有错误,所以我没有附上这个) mainwindow.cpp(这里肯定没有错误,所以我没有附上这个) mainwindow.ui(这里肯定没有错误,所以我没有附上这个)

登录.h

class MainWindow2: public QWidget

    Q_OBJECT
public:
    explicit MainWindow2(QWidget *parent = nullptr);
    ~MainWindow2();

private:
    MainWindow2 *ui;
;

登录.cpp

MainWindow2::MainWindow2(QWidget *parent) : QWidget(parent), ui(new MainWindow2)


    ui->setupUi(this);


MainWindow2::~MainWindow2()

    delete ui;

确切地说,我在 login.cpp 中有一个错误,错误是“MainWindow2 中没有名为 setupUi 的成员”

.pro file


    #-------------------------------------------------
#
# Project created by QtCreator 2019-06-21T16:44:15
#
#-------------------------------------------------

QT       += core gui network

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = untitled3
TEMPLATE = app

# The following define makes your compiler emit warnings if you use
# any feature of Qt which has been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

CONFIG += c++11

SOURCES += \
        login.cpp \
        main.cpp \
        mainwindow.cpp

HEADERS += \
        login.h \
        mainwindow.h

FORMS += \
        login.ui \
        mainwindow.ui

# Default rules for deployment.
qnx: target.path = /tmp/$$TARGET/bin
else: unix:!android: target.path = /opt/$$TARGET/bin
!isEmpty(target.path): INSTALLS += target

【问题讨论】:

评论不用于扩展讨论;这个对话是moved to chat。 【参考方案1】:

首先在 Qt Creator 5.8 中,您需要将表单添加到您的项目 (*.pro) 中: add new form to Qt 然后在第一种形式的标题中包含第二种形式的标题。然后你可以在第一种形式中声明和初始化第二种形式的指针类型

Form2 m_pSecondWnd = new Form 

在第一种形式的按钮单击槽上,您可以调用:

this->close();
m_pSecondWnd ->show();

【讨论】:

【参考方案2】:

仅创建唯一的QT导致的““class”中没有名为setupUi的成员”或“分配不完整类型“UI::class””等错误表单设计器(QT 设计器没有创建 .h 文件,只有 .ui )。你要做的事情是:创建 QT 设计器的表单类来创建 .h 和 .ui 文件。并且不要忘记按以下方式#include 它:例如,#include "ui_mainwindow.h"。编码愉快!

【讨论】:

以上是关于如何创建第二个 QT .ui 表单?的主要内容,如果未能解决你的问题,请参考以下文章

Qt:没有从第二个线程调用插槽

Qt使用UI表单创建自定义小部件[关闭]

在 Qt 中打开第二个窗口

如何在 C4Droid 中编译简单的 Qt 5.2 项目

如何使用 pyqt5 和 qt 设计器从主对话框窗口打开第二个窗口

从 .cpp 和 .h 为 Qt Designer 创建 ui 文件