使用许多小部件设置UI对象
Setting UI objects with many widgets
我使用的是Qt 5.5.1。我有一个MainWindow
,它是用代码手动创建的。它有一个QListWidget
和QStackedWidget
。此外,我有5个小部件,其中包含在表单设计中制作的*.ui
文件。问题是,我不知道如何从MainWindow.cpp
为表单上的对象设置字段。
这是第一行的页面。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.cp:
settings::settings(QWidget *parent) : QWidget(parent), ui(new Ui::settings)
{
ui->setupUi(this);
}
和MainWindow.cpp:
MainWindow::MainWindow()
{
//code here//
settings::ui->firstAddedParamLabel->setVisible(true);
}
所以,当我编译时,我得到:
错误:"Ui::settings*settings::Ui"是静态数据成员;它可以只能在其定义处初始化设置::设置(QWidget*父项):QWidget(父项),ui(新ui::设置)
并指向CCD_ 6。我的问题是,如何设置/获取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
类公开是不太好看的。我还建议保持干净的Code风格,正确使用驼色大小写类型和更健壮的类名。
例如:settings
=>SettingsWidget
对于生成的UI类可能:ui::settings
=>Ui::SettingsWidgetForm
这样可以更容易地保持生成类和自行编写类之间的区别。
如果你真的想让它成为静态的,你可以试试下面的:
在您的页面.cpp:
Ui::settings *settings::ui = 0;
settings::settings(QWidget *parent) : QWidget(parent), ui(new Ui::settings)
{
ui->setupUi(this);
}
或者,如果上面的代码不起作用,请尝试下面的代码:
Ui::settings *settings::ui = new Ui::settings;
settings::settings(QWidget *parent) : QWidget(parent)
{
ui->setupUi(this);
}
我的问题仍然是,你为什么要让它静止?你到底想实现什么?如果你想操作UI,你应该在你的设置小部件中进行,这不是一个好的做法。如果你在UI上发现了错误,很难找到,因为所有的东西都能操作它。
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 在C++/Linux中设置单调时钟的一些技巧
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 嵌套在类中时无法设置成员数据
- 需要帮助设置在C++中使用的Potrace
- 如何在MS Visual Studio 2019中运行QT UI
- 如何在自删除后将对象设置为nullptr
- 将指针设置为"nullptr"并不能防止双重删除?
- 如何在Ubuntu中使用cmake设置qt4
- ld:bind_at_load和-bitcode_bundle(Xcode设置ENABLE_bitcode=YES)不能
- 如何在boost beast http请求中设置http头
- 如何解决gcc编译器优化导致的centos双编译器设置中的分段错误
- 如何在主窗口.ui界面的特定位置设置QSpinBox
- 使用许多小部件设置UI对象
- 在Qt Quick中设置/读取UI值的最佳方式是什么
- 为我的银行项目设置支票账户和储蓄账户的UI
- 防止在设置高 DPI 时放大 Win32 应用程序的 UI 元素
- 设置菜单UI实现
- 在MFC中设置UI标题时出错
- c++和Qt,我如何在对象创建上运行构造函数或不同的函数来设置Ui