gpt4 book ai didi

qt - 在代码中的哪个位置连接 Qt SIGNALS 和 SLOTS 以获得最佳代码可读性?

转载 作者:行者123 更新时间:2023-12-04 13:24:14 25 4
gpt4 key购买 nike

我开始在 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;
}

真的,“最好”的方法是看你喜欢它的方式以及你容易记住的东西。我建议你想出一个你能理解的习惯用法,这样以后如果你必须编辑你的代码,你就会知道去哪里找。

关于qt - 在代码中的哪个位置连接 Qt SIGNALS 和 SLOTS 以获得最佳代码可读性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19419636/

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