无法连接(空)::选择更改为 QTableView

Cannot connect (null)::selectionChanged to QTableView

本文关键字:选择 QTableView 连接      更新时间:2023-10-16

我有以下提升的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的信号,但出现错误。.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);

左单击和右键单击信号按预期工作,但我收到错误:

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

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

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