我开始在 Qt 中编程,并正在寻找关于在代码中何处编写connect
语句的最佳实践,以使代码更具可读性。
从目前的角度来看,似乎connect
在任意位置进行定义(假设任意位置并不意味着功能差异)可能会导致代码非常难以阅读。
connect
目前,我找到了在包含 SLOTS 的类的构造函数中定义语句的最直观方法。
是否有标准或推荐的最佳实践?
我开始在 Qt 中编程,并正在寻找关于在代码中何处编写connect
语句的最佳实践,以使代码更具可读性。
从目前的角度来看,似乎connect
在任意位置进行定义(假设任意位置并不意味着功能差异)可能会导致代码非常难以阅读。
connect
目前,我找到了在包含 SLOTS 的类的构造函数中定义语句的最直观方法。
是否有标准或推荐的最佳实践?
我喜欢为我的布局的每个“主要”部分设置一个函数来进行初始化。下面是一个构造函数的例子。每个create
函数都返回一个组框小部件。
MissionConfiguration::MissionConfiguration(QWidget* parent) : QWidget(parent)
{
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(createMissionConfigurationGroupBox());
layout->addWidget(createNetAcquireGroupBox());
layout->addWidget(createSystemStatus());
layout->addWidget(createStatusButtons());
setLayout(layout);
}
在这些“创建”功能中的每一个中,都连接了适当的信号/插槽。如果小部件很复杂,它可以帮助我保持井井有条。
下面是一个createStatusButtons
函数示例:
QGroupBox* MissionConfiguration::createStatusButtons() {
// on the qbutton status
QGroupBox *runModes = new QGroupBox(tr("Run Modes"));
QHBoxLayout *runModeLayout = new QHBoxLayout;
live = new QRadioButton(tr("Live"));
playback = new QRadioButton(tr("Playback"));
simulation = new QRadioButton(tr("Simulation"));
QPushButton *logout = new QPushButton("Logout");
simulation->setChecked(true);
connect(recorder, SIGNAL(isConnected(bool)), live, SLOT(setEnabled(bool)));
connect(recorder, SIGNAL(isConnected(bool)), playback, SLOT(setEnabled(bool)));
connect(logout, SIGNAL(clicked()), this, SLOT(logout()));
runModeLayout->addWidget(live);
runModeLayout->addWidget(playback);
runModeLayout->addWidget(simulation);
runModeLayout->addWidget(logout);
runModes->setLayout(runModeLayout);
return runModes;
}
真的,“最好”的方法是你喜欢它的方式以及你容易记住的方式。我建议你想出一个你可以理解的习语,这样以后如果你必须编辑你的代码,你就会知道去哪里找。