gpt4 book ai didi

c++ - 使用许多小部件设置 UI 对象

转载 作者:搜寻专家 更新时间:2023-10-31 02:16:55 24 4
gpt4 key购买 nike

我正在使用 Qt 5.5.1。我有一个 MainWindow 是用代码手动创建的。它有一个 QListWidgetQStackedWidget。另外,我有 5 个带有 *.ui 文件的小部件,这些文件是在表单设计中制作的。问题是我不知道如何为来自 MainWindow.cpp 的表单上的对象设置字段。

这里是 pages.h 的第一行:

#include <QWidget>

namespace Ui
{
class settings;
class textCreating;
class databasework;
class AutoMode;
class ManualMode;
}

class settings : public QWidget
{
Q_OBJECT
public:
settings(QWidget *parent = 0);
~settings();
static Ui::settings *ui; //It was private and not static at first
private:
};

//other classes//
//...//

在 pages.cpp 中:

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

和MainWindow.cpp:

MainWindow::MainWindow()
{
//code here//

settings::ui->firstAddedParamLabel->setVisible(true);
}

所以,当我编译时,我得到:

error: 'Ui::settings* settings::ui' is a static data member; it can only be initialized at its definition settings::settings(QWidget *parent) : QWidget(parent), ui(new Ui::settings)

它指向 ui(new Ui::settings)。我的问题是,如何设置/获取 UI 字段?我无法完全理解。谢谢!

最佳答案

您的“ui”成员不应该是静态的。你决定这样做的原因是什么?您甚至可以将其用作简单的类作用域成员,例如:

#include <QWidget>    
#include "ui_settings.h"

class settings : public QWidget
{
Q_OBJECT

public:
settings(QWidget* parent) : QWidget(parent)
{// move this to cpp...
ui.setupUi(this);
}
virtual ~settings();

public:
Ui::settings ui;
};

要使用它,您只需将它添加为 MainWindow 类的成员即可。

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
MainWindow(QWidget* parent)
{
_settings = new settings(this);
setCentralWidget(_settings); // You may also add it somewhere else in your layout, of course.

_settings->ui.firstAddedParamLabel->setVisible(true);
}

private:
settings* _settings;
};

我个人认为将整个Ui::settings类公开为public并不是一件很美好的事情。我还建议保持干净的代码风格并正确使用驼峰式大小写和更健壮的类名。

例如:settings => SettingsWidget对于生成的 UI 类可能是:ui::settings => Ui::SettingsWidgetForm

这更容易区分生成的类和自写的类。

关于c++ - 使用许多小部件设置 UI 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36394510/

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