【问题标题】:Using if statement使用 if 语句
【发布时间】:2012-09-21 05:41:55
【问题描述】:

我想在按下按钮 1 时显示名为 image1 的图像,按下按钮 2 时显示名为 image2 的图像。为了做到这一点,我想使用“if”语句。我写了以下代码:

if(ui->button1->clicked())
image.load(":/CondScrnIns.png");
else if(ui->button2->clicked())
image.load(":/CondScrnInsCentric.png");

但在执行这些语句时,我收到以下错误:

void QAbstractButton::clicked(bool) is protected

我应该使用 clicked() 的 insted 什么函数?

【问题讨论】:

标签: qt signals signals-slots


【解决方案1】:

您必须为每个按钮的 clicked 信号和 do image.load 创建插槽。

connect(button1, SIGNAL( clicked() ), this, SLOT(button1Clicked()));
connect(button2, SIGNAL( clicked() ), this, SLOT(button2Clicked()));

然后在 button1Clicked() 和 button2Clicked() 插槽中,您可以放入代码以加载图像或调整对话框大小。

【讨论】:

    【解决方案2】:

    您需要在相应的事件处理程序中编写image.load() 语句。您不能在这样的 if 语句中检查 button->clicked()

    看这个页面:http://qt-project.org/forums/viewthread/2758

    【讨论】:

    • 好的,但是如果我想在 if 语句中以不同的方式使用 button->clicked(),比如形状更改对话框,即,如果我点击一个按钮,对话框的形状应该改变,如果我点击另一个它应该回到原来的大小,那么我应该如何使用它??
    • 如果您希望在单击按钮时发生任何事情,则所有相关代码都必须进入事件处理函数。 clicked() 函数不返回任何值 - 在 if 语句中使用它是没有意义的。
    猜你喜欢
    • 1970-01-01
    • 2012-09-17
    • 1970-01-01
    • 2017-04-28
    • 1970-01-01
    • 1970-01-01
    • 2015-02-06
    • 2011-06-09
    • 2014-06-05
    相关资源
    最近更新 更多