如何创建第二个 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 表单?的主要内容,如果未能解决你的问题,请参考以下文章