查看完整版本: [-- 第二章 创建对话框  P21页问题 --]

QTCN开发网 -> 《C++ GUI Qt 4编程》(第2版)专栏 -> 第二章 创建对话框  P21页问题 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

fly1057 2013-12-28 15:57

第二章 创建对话框  P21页问题

请问各位,on_objectName_signalName()命名惯例是什么?怎么理解自动连接信号和槽。[attachment=11527]

ashe0817 2013-12-28 22:02
这个是Qt提供的一个功能。连接信号槽需要显示调用connnect去把一个信号和槽关联起来
但是有个例外的情况,就是这里的on_xxx_yyy规则
xxx表示对象的名称,yyy表示该对象的某个信号的名称,比如“on_pushButton_clicked”、on_pushButton2_clicked

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

[attachment=11530]

marlenechen 2017-09-28 22:06
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>>>");
        }
}

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


查看完整版本: [-- 第二章 创建对话框  P21页问题 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled