如果树视图中的索引发生更改,我想调用函数
indexChanged()
。
我使用了 ui->treeView->currentChanged()
信号,但它没有调用 indexChanged()
插槽,即使我将信号连接到插槽。
这是我的代码:
.cpp 文件
TipManager::TipManager(QWidget *parent) :
QWidget(parent),
ui(new Ui::TipManager)
{
ui->setupUi(this);
connect(ui->treeView->selectionModel(), &QItemSelectionModel::currentChanged, this, &TipManager::indexChanged);
...
}
void TipManager::indexChanged(const QModelIndex ¤t, const QModelIndex &previous)
{
trimCurrentPath(previous);
}
.h 文件
namespace Ui {
class TipManager;
}
class TipManager : public QWidget
{
Q_OBJECT
public:
explicit TipManager(QWidget *parent = 0);
~TipManager();
public slots:
void indexChanged(const QModelIndex ¤t, const QModelIndex &previous);
private:
Ui::TipManager *ui;
...
};
我也在调试模式下进行了测试,但是槽函数
indexChanged()
甚至没有被调用。另外,它显示此消息:QObject::connect:无效的空参数
我遇到了类似的问题(插槽没有被触发)。按照 @G.M. 在对您的问题的评论中的指针,结果表明,如果还没有模型,则对 ui->treeView->selectionModel() 的调用将返回 null(并且可能尚未调用 setSelectionModel() ) .
如果我在 connect() 调用中调用 ui->treeView->selectionModel() 之前填充了 QTreeView,那么我收到了非空响应,并且该插槽由所需的信号触发。