【问题标题】:Cannot connect (null)::selectionChanged to QTableView无法连接 (null)::selectionChanged 到 QTableView
【发布时间】:2015-06-12 01:02:34
【问题描述】:

我有以下提升的 QTableView:

class QRightClickableTableView : public QTableView {
  Q_OBJECT
public:
  explicit QRightClickableTableView(QWidget *parent = 0): QTableView(parent) {}

private slots:
  void mouseReleaseEvent(QMouseEvent *e) {
    if(e->button()==Qt::RightButton)
      emit rightClicked();
    else if (e->button()==Qt::LeftButton)
      emit leftClicked();
  }

signals:
  void rightClicked();
  void leftClicked();
};

绑定QrightClickableTableView的selectionChanged信号时,报错。在 .cpp 中:

QRightClickableTableView *table = ui->dataTableView;
connect(table, SIGNAL(leftClicked()), this, SLOT(on_tableViewLeftClicked()));
connect(table, SIGNAL(rightClicked()), this, SLOT(on_tableViewRightClicked()));

connect(table->selectionModel(), SIGNAL(selectionChanged(QItemSelection, QItemSelection)),
    SLOT(on_tableViewSelectionChanged(QItemSelection)));
table->setModel(model);

leftClicked 和 rightClicked 信号按预期工作,但出现错误:

QObject::connect: Cannot connect (null)::selectionChanged(QItemSelection, QItemSelection) to MyApp::on_tableViewSelectionChanged(QItemSelection)

【问题讨论】:

  • 什么时候为表格视图设置模型?在进行信号槽连接之前尝试设置它
  • 呃。谢谢。就是这样。你能回答我吗?

标签: c++ qt signals-slots qtableview


【解决方案1】:

信号槽连接失败,因为table->selectionModel() 已返回空值。

如果您在连接信号槽之前为您的表设置了模型,table->selectionModel() 将返回一个有效的模型,从而使信号槽连接成功。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-03
    • 2015-05-29
    • 1970-01-01
    • 2022-09-26
    • 2011-05-08
    • 1970-01-01
    相关资源
    最近更新 更多