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

时间:2013-10-17 06:24:40

标签: qt signals-slots

我开始在Qt中编程,并且正在寻找代码中编写connect语句的最佳实践,以便代码更具可读性。

从目前的角度来看,似乎在任意位置定义connect(假设任意位置并不意味着功能差异)会导致非常难以阅读的代码。

目前,我找到了在包含SLOTS的类的构造函数中定义connect语句的最直观方法。

是否有标准或推荐的最佳做法

1 个答案:

答案 0 :(得分:1)

我喜欢为我的布局的每个“主要”部分创建一个函数用于初始化。下面是一个构造函数的示例。每个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;
}

真的,“最好”的方法是你喜欢它以及你容易记住什么。我建议你想出一个你能理解的习语,所以将来如果你需要编辑你的代码,你就会确切地知道在哪里看。