• 3985阅读
  • 3回复

[提问][已解决]求助:一个类的自定义信号在另一个类中无响应 [复制链接]

上一主题 下一主题
离线wanghuikan
 

只看楼主 倒序阅读 楼主  发表于: 2012-05-12
自定义信号代码
class MyTreeView : public QWidget
{
    Q_OBJECT;
......
signals:
    void dir_change();
};
发出自定义信号的代码
void MyTreeView::choose(QModelIndex)
{
    QModelIndex index = treeView->currentIndex();
    if (!index.isValid()) {
        return;
    }
    chosen_dir=model->filePath(index);
    show_dir=chosen_dir;
    emit dir_change();
}
调试的时候,emit dir_change()的确已经运行了

另一个类的接受信号的代码
File_Sort::File_Sort(QWidget *parent)
    : QDialog(parent)
{
.......
        Tr_dir=new MyTreeView;
        connect(Tr_dir,SIGNAL(dir_change()),this,SLOT(dir_change(QString)));
}
信号槽函数dir_change(QString)
void File_Sort::dir_change(QString)
{
    Le_dir->clear();
    Le_dir->setText(Tr_dir->show_dir);
}
编译成功,但调试的时候,该信号槽函数并没有被调用,也就是说信号接受不成功?
求助,如何解决该问题,希望大家来看看

离线passion_wu
只看该作者 1楼 发表于: 2012-05-12
参数明显有问题,信号的参数个数不能小于槽函数的参数个数,而且对应的参数必须类型一样!

离线wanghuikan

只看该作者 2楼 发表于: 2012-05-12
谢谢指教,把void dir_change(QString)改为void dir_change()信号就有响应了,谢谢
离线wanghuikan

只看该作者 3楼 发表于: 2012-05-12
回 1楼(passion_wu) 的帖子
谢谢指教,把void dir_change(QString)改为void dir_change()信号就有响应了,谢谢
快速回复
限100 字节
 
上一个 下一个