gpt4 book ai didi

c++ - 使用 Qt Creator 表单进行适当的子类化?

转载 作者:行者123 更新时间:2023-11-27 23:04:07 25 4
gpt4 key购买 nike

我正在尝试创建一个类 (AgilentSweeper),它是 QDockWidget 的子类,以便我可以在 Qt Creator 的表单设计器中为其设计布局。该类的标题如下所示:

// agilentsweeper.h
#ifndef AGILENTSWEEPER_H
#define AGILENTSWEEPER_H

#include <QDockWidget>

namespace Ui {
class AgilentSweeper;
}

class AgilentSweeper : public QDockWidget
{
Q_OBJECT

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

private:
Ui::AgilentSweeper *ui;
};

#endif // AGILENTSWEEPER_H

来源看起来像

// agilentsweeper.cpp
#include "agilentsweeper.h"
#include "ui_agilentsweeper.h"
#include <QDockWidget>

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

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

在我的主类 h 文件中,我用

声明了一个 AgilentSweeper 实例
#ifndef UTILSWEEP_H
#define UTILSWEEP_H

#include <QMainWindow>
#include <QDockWidget>
#include "agilentsweeper.h"

namespace Ui {
class UtilSweep;
}

class UtilSweep : public QMainWindow
{
Q_OBJECT

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

private:
Ui::UtilSweep *ui;
AgilentSweeper sweeper;
};

#endif // UTILSWEEP_H

在主类的构造函数中,我尝试在主窗口的一侧显示“清扫器”

#include "utilsweep.h"
#include "ui_utilsweep.h"
#include "agilentsweeper.h"
#include <QDockWidget>
#include <QMainWindow>

UtilSweep::UtilSweep(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::UtilSweep)
{
ui->setupUi(this);
addDockWidget(Qt::LeftDockWidgetArea,sweeper);
}

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

但是,我得到一个错误

In constructor 'UtilSweep::UtilSweep(QWidget*)':  utilsweep.cpp:12: error: no matching function for call to 'UtilSweep::addDockWidget(Qt::DockWidgetArea, AgilentSweeper&)'
addDockWidget(Qt::LeftDockWidgetArea,sweeper);

暗示

candidates are:  void QMainWindow::addDockWidget(Qt::DockWidgetArea, QDockWidget*)
void addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget);

环顾四周,我发现其他几个人也有类似的错误,但在他们的情况下,似乎在某些地方没有包含 QDockWidget,或者他们没有使用 Q_OBJECT。这里出了什么问题?

最佳答案

addDockWidget() 需要一个指向 QDockWidget 对象的指针作为第二个参数。您的类变量 sweeper 是对象本身,而不是指针。您添加 addDockWidget() 的调用应该是:

addDockWidget(Qt::LeftDockWidgetArea, &sweeper);

关于c++ - 使用 Qt Creator 表单进行适当的子类化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24764742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com