Как создать вторую форму QT .ui? - PullRequest
0 голосов
/ 21 июня 2019

Ну, я хочу сделать приложение для 2 окон (в 1 окне есть кнопка, которая открывает второе окно в предыдущем окне)

Пока у меня есть это:

  1. login.h
  2. login.cpp
  3. login.ui
  4. mainwindow.h (здесь нет ошибок, поэтому я не прикрепил это)
  5. mainwindow.cpp (здесь нет ошибок, поэтому я не прикрепил это)
  6. mainwindow.ui (здесь нет ошибок, поэтому я не прикрепил это)

login.h

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

private:
    MainWindow2 *ui;
};

login.cpp

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

    ui->setupUi(this);
}

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

Если быть точным, у меня ошибка в login.cpp, ошибка "нет члена с именем setupUi в MainWindow2"

.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

Ответы [ 2 ]

0 голосов
/ 21 июня 2019

Такие ошибки, как "нет члена с именем setupUi в " классе "" или "выделение неполного типа " UI :: class "", вызванные созданием только единственного конструктора форм QT (QT конструктор не создавал .h файл, только .ui). Вы должны сделать следующее: создать класс конструктора форм QT для создания файлов .h и .ui. И не забудьте включить #include следующим образом: например, #include "ui_mainwindow.h". Удачного кодирования!

0 голосов
/ 21 июня 2019

В Qt Creator 5.8 сначала вам нужно добавить форму в ваш проект (* .pro): добавить новую форму в Qt , затем в первый заголовок формы включить второй заголовок формы.Затем вы можете объявить и инициализировать тип указателя второй формы в первой форме

Form2 m_pSecondWnd = new Form 

, а при щелчке кнопки в первой форме вы можете просто позвонить:

this->close();
m_pSecondWnd ->show();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...