c++ - 将 .ui 文件添加到 QT 中的现有类

标签 c++ qt qt5 qt-designer

谁能告诉我如何将 .ui 文件添加到 Visual 中的现有类中的步骤吗? 首先,我在 Visual 中添加了一个新项目,然后选择“QT Dialog Form File”选项,然后在 QT Designer 中创建了我想要的对话框表单。

我的.h文件:

(...)
#include "ui_Serial.h"


class Serial : public QWidget
{
    Q_OBJECT

public:
    Serial(QWidget *parent);
    ~Serial();

    Ui::Serial *ui;
(...)

我的问题是,我无法使用 setup ui 功能:

Serial::Serial(QWidget *parent)
: QWidget(parent)
{
    serial = new QSerialPort(this);
    ui->setupUi(this);

}

我收到此错误: 无法将参数 1 从“Serial *”转换为“QDialog *

我怎样才能通过这个? 有任何想法吗? 问候

最佳答案

每个模板都有一个默认类,因为在构建 .ui 时,会嵌入类命令。

  • 如果您使用模板Widget,您的类应该是QWidget
  • 如果您使用模板Dialog with Buttons BottomDialog with Buttons RightDialog without Buttons,您的类应该是QDialog
  • 如果您使用模板MainWindow,您的类应该是QMainWindow

因此,根据您的情况,我们得出的结论是您应该使用继承自 QDialog 的类:

*.h

#include "ui_Serial.h"


class Serial : public QDialog
{
    Q_OBJECT

public:
    Serial(QWidget *parent=0);
    ~Serial();

    Ui::Serial *ui;
}

*.cpp

Serial::Serial(QWidget *parent):QDialog(parent)
{
    serial = new QSerialPort(this);
    ui->setupUi(this);

}

关于c++ - 将 .ui 文件添加到 QT 中的现有类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45774187/

相关文章:

c++ - Qt5-QML : Button does not show up after triggered

c++ - 光标仍然出现在 LineEdit 中,尽管它不再聚焦

c++ - 开罗 - 多线程 - 在 cairo_image_surface_create 期间卡住

c++ - UBUNTU C 的 USB 到串行通信问题

c++ - 在 vector 中使用 for range 来添加元素

c++ - 错误 : T does not name a type - For specialisation using strongly typed enums

c++ - 将 std::unique_ptr.get() 作为参数传递给 addWidget()

Qt双免费或损坏

qt - 为什么我的 sqlite 查询在 Qt5 中这么慢?

c++ - 如何简化此 cmake 文件?