• 4343阅读
  • 8回复

[提问]点击按钮,clicked()无反应 [复制链接]

上一主题 下一主题
离线marlenechen
 

只看楼主 倒序阅读 楼主  发表于: 2017-09-28
书中P29页第一段 说显示扩展对话框的实现,是:在单击more按钮时调用QPushButton中的setText()函数完成。

我写了:
        QObject::connect(moreButton, SIGNAL(clicked()), this, SLOT(isClicked()));

        QObject::connect(moreButton, SIGNAL(toggled(bool)), SecondaryGroupBox, SLOT(setVisible(bool)));
        QObject::connect(moreButton, SIGNAL(toggled(bool)), tertiaryGroupBox, SLOT(setVisible(bool)));

……

void CSortDialog::isClicked()
{
        if (moreButton->text() == "&More>>>")
        {
                moreButton->setText("&More<<<");
        }
        else
        {
                moreButton->setText("&More>>>");
        }
}

点击按钮后,为何没有反应?????
离线never_forget

只看该作者 1楼 发表于: 2017-09-29
你把这个条件打印一下不就知道了 moreButton->text() == "&More>>>"
离线小韩老师

只看该作者 2楼 发表于: 2017-09-29
"&More>>>"初始化设置了按钮文本?自己打印输出一下moreButton->text(),看看文本是否是"&More>>>",目测文本是"More>>>",自己去测试一下,通过文本比对判断,一个可以用bool标识的变量感觉好怪,我是不会这么用!
离线小韩老师

只看该作者 3楼 发表于: 2017-09-29
"&More>>>"初始化设置了按钮文本?自己打印输出一下moreButton->text(),看看文本是否是"&More>>>",目测文本是"More>>>",自己去测试一下,通过文本比对判断,一个可以用bool标识的变量感觉好怪,我是不会这么用!
离线九重水

只看该作者 4楼 发表于: 2017-10-11
不说有没有效果这玩意。
看楼主的意思是:点一下,然后展开某个东西。比如买电脑时选择比较条件,点之前是CPU;点了之后可选是CPU,显卡;

单纯这个功能的实现,一般不会通过按钮的文本来比较。
楼主可以借鉴《C++ GUI QT4编程》2.4节 改变形状的对话框参考。这本书是根据Group的可见性作为toogled的参数传进来。

再次强调,不要用某个button的文本作为比较。
离线marlenechen

只看该作者 5楼 发表于: 2017-10-21
回 小韩老师 的帖子
小韩老师:"&More>>>"初始化设置了按钮文本?自己打印输出一下moreButton->text(),看看文本是否是"&More>>>",目测文本是"More>>>",自己去测试一下,通过文本比对判断,一个可以用bool标识的变量感觉好怪,我是不会 .. (2017-09-29 08:42) 

你是 怎么 用的 呢?
离线marlenechen

只看该作者 6楼 发表于: 2017-10-21
回 九重水 的帖子
九重水:不说有没有效果这玩意。[表情]
看楼主的意思是:点一下,然后展开某个东西。比如买电脑时选择比较条件,点之前是CPU;点了之后可选是CPU,显卡;
单纯这个功能的实现,一般不会通过按钮的文本来比较。
楼主可以借鉴《C++ GUI QT4编程》2.4节 改变形状的对话框参考。这本书是根据 .. (2017-10-11 13:58) 

我并不是想通过button的文本比较,而是希望通过Group的可见性作为toogled的参数传进来时,按钮的文本也做相应的改变。当展开时,按钮显示收起。当隐藏时,按钮显示展开
离线小韩老师

只看该作者 7楼 发表于: 2017-10-21
就用一个bool变量标识当前的状态,点击按钮时就将该状态取反变,再根据进行该变量标识状态设置文本显示,以及界面显示
离线sdiwen1982

只看该作者 8楼 发表于: 2017-10-23
用bool看一下connect的返回值,先判断connect是否成功了。
bool b = QObject::connect(moreButton, SIGNAL(clicked()), this, SLOT(isClicked()));
快速回复
限100 字节
 
上一个 下一个