首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

Qt中的emit解决方法

2012-12-29 
Qt中的emit看到一段代码,有两个小问题。问题(1):signals:void findNext(const QString &str, Qt::CaseSensi

Qt中的emit
看到一段代码,有两个小问题。
问题(1):
signals: 
        void findNext(const QString &str, Qt::CaseSensitivity cs); 
        void findPrevious(const QString &str, Qt::CaseSensitivity cs); 

private slots: 
        void findClicked(); 
        void enableFindButton(const QString &text); 
(以上是信号以及私有槽的声明,关键问题在下面)
void FindDialog::findClicked() 

        QString text = lineEdit->text(); 
        Qt::CaseSensitivity cs = caseCheckBox->isChecked() ? Qt::CaseInsensitive : Qt::CaseSensitive; 
        if(backwardCheckBox->isChecked()) { 
                emit findPrevious(text, cs); 
        } 
        else { 
                emit findNext(text, cs); 
        } 

在这段代码中,emit是如何起作用的?


问题(2)
QLabel *label; 
label = new QLabel(tr("Find &what:")); 

QCheckBox *caseCheckBox; 
caseCheckBox = new QCheckBox(tr("Match &case")); 
那个tr到底是什么意思啊?


[解决办法]
emit是将信号findNext或信号findPrevious发射出去;
tr是Qt中为了国际化而使用的。
[解决办法]
说白了,就是调用findPrevious或者findNext信号对应的槽函数,emit之前,在某个地方,肯定有connect把信号和槽进行关联,关联了之后,emit某个信号,就相当于调用这个信号connect时所关联的槽函数,就这么简单而已。
tr()是为了支持多语言多种字符编码而实现,可以正确显示中文等非assci编码字符
[解决办法]
emit啥事也不干,是给程序员看的
[解决办法]
emit是发出信号 对应的是接收信号

在这之前 应该有QObject::connect(*FindDialog, SIGNAL(), *receiver, SLOT()) 类似的句子

调用emit ..后,对应的SLOT里面的函数就会被调用

热点排行