1

スロット X に関連付けられた cellEntered(int,int) シグナルを持つ QTableWidget インスタンスがあります (セルが含まれる行を強調表示します)。また、チェックボックスを含む列が 1 つあります。

問題は、 QTableWidget::setCellWidget() メソッドを使用してテーブルのセルにチェックボックスを追加することです:

QTableWidgetItem *checkBoxItem = new QTableWidgetItem("");
ui->tableWidget->setItem(rowCount, column, checkBoxItem);
QCheckBox* checkBox = new QCheckBox();
ui->tableWidget->setCellWidget(rowCount, column, checkBox);
connect(checkBox, SIGNAL(clicked(bool)),
    this, SLOT(checkbox_clicked(bool)));

カーソルがその列のセルの上にあるときに、スロット X が呼び出されないようにします。

この問題は特にチェック ボックスではなく、他の種類のウィジェットでも発生します。

いくつかの投稿で SignalMapper クラスについて読んだことがありますが、そのクラスはウィジェットからスロットにシグナルをマップするのに役立つようです。代わりに、私の問題はテーブルからの信号に関連しています。

なにか提案を?

乾杯、

パブロ

4

1 に答える 1

0

QTableWidgetItem を使用して、QTableWidgetItem::setCheckState(Qt::CheckState state)でチェック可能に設定してみませんか?

QTableWidgetItem *check_item = new QTableWidgetItem;
check_item->setCheckState(Qt::Unchecked);

旗でもできます。

check_item->setFlags(Qt::ItemIsUserCheckable);

QTableWidget ::itemChanged(QTableWidgetItem * item)シグナルをスロットに接続し、アイテムがそこでチェックされているかどうかを確認します。

于 2013-04-19T09:42:21.220 に答える