如果我的treeView中的索引已更改,我想调用函数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:无效的空参数
答案 0 :(得分:0)
我遇到了类似的问题(插槽未被触发)。按照@GM 在对您的问题的评论中的指针,如果还没有模型,则对 ui->treeView->selectionModel() 的调用返回 null(并且 setSelectionModel() 可能尚未被调用) .
如果我在 connect() 调用中调用 ui->treeView->selectionModel() 之前填充了我的 QTreeView,那么我会收到我的非空响应,并且该插槽根据需要由信号触发。