如果我使用 QT Designer,如何更改小部件 属性

How to change the widgets property if I use QT Designer

我正在使用 Visual Studio 2022 和 C++ QT 5.14.2。

我使用 QT Designer 设置了一个 PushButton 和一个 LineEdit,并给了它们一些初始值 属性。但是我在按钮点击信号槽函数中遇到了问题,这是我的代码:

void SocketChat::on_connectButton_clicked() {
    appendMessage(ui.connectButton->text());  // output button's text
    if (ui.addrEdit->isEnabled() && ui.portEdit->isEnabled()) {
        // disabled
        ui.addrEdit->setEnabled(false);
        ui.connectButton->setText(QStringLiteral("Disconnect"));
        appendMessage(ui.connectButton->text());  // output button's text
    }
    if (ui.addrEdit->isEnabled() && !ui.portEdit->isEnabled()) {
        ui_notification->setText(QStringLiteral("Please stop listening."));
    }
    if (!ui.addrEdit->isEnabled() && ui.portEdit->isEnabled()) {
        // enabled
        ui.addrEdit->setEnabled(true);
        ui.connectButton->setText(QStringLiteral("Connect"));
    }
}

按钮的文字在QT Designer中赋值为'Connect',函数执行完后,按钮的文字仍然是'Connect'。

appendMessage函数每次点击输出两个词:

Connect Disconnect

点击功能正常,但在此功能中成功更改了按钮的文本。但是功能完成后,一切都恢复了。按钮的文本仍然是 'Connect'。我试过 repaint()update(),它们无法工作。

如何更改widgets的属性?好像这些属性一旦更改就无法初始化了。

您缺少 else 个关键字。

请注意,当您单击按钮时,第一个 if 块(标记为“// 已禁用”)将被执行,它会禁用 ui.addrEdit 按钮。由于缺少 else 关键字,程序还会检查其他 if 语句的条件。由于按钮现在被禁用,最后一个条件评估为真,因此标记为“//启用”的块也是 运行。这不是你想要的。