• 5268阅读
  • 2回复

[提问]第二章 创建对话框  P21页问题 [复制链接]

上一主题 下一主题
离线fly1057
 
只看楼主 倒序阅读 楼主  发表于: 2013-12-28
请问各位,on_objectName_signalName()命名惯例是什么?怎么理解自动连接信号和槽。
一星期,至少坚持一星期再放弃
离线ashe0817

只看该作者 1楼 发表于: 2013-12-28
Re:第二章 创建对话框  P21页问题
这个是Qt提供的一个功能。连接信号槽需要显示调用connnect去把一个信号和槽关联起来
但是有个例外的情况,就是这里的on_xxx_yyy规则
xxx表示对象的名称,yyy表示该对象的某个信号的名称,比如“on_pushButton_clicked”、on_pushButton2_clicked

那么Qt又是怎么连接的呢?你在编译GUI程序的时候会在输出目录下多出ui_xxx.h的文件,打开看看就知道了
其实Qt自动调用了一个静态函数“connectSlotsByName”去连接的


离线marlenechen

只看该作者 2楼 发表于: 2017-09-28
回 ashe0817 的帖子
ashe0817:这个是Qt提供的一个功能。连接信号槽需要显示调用connnect去把一个信号和槽关联起来
但是有个例外的情况,就是这里的on_xxx_yyy规则
xxx表示对象的名称,yyy表示该对象的某个信号的名称,比如“on_pushButton_clicked”、on_pushButton2_clicked
那么Qt又是怎么连接的呢?你在编 .. (2013-12-28 22:02) 

书中有一段 说显示扩展对话框的实现,是:在单击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>>>");
        }
}

点击按钮后,为何没有反应?????
快速回复
限100 字节
 
上一个 下一个