1

QTableWidget をサブクラス化して、いくつかの機能を追加しました。私もそのmyQTableWidgetSubclass->setRowCount(10);方法を使ってきました。

問題は、テーブルが編集できないことです。目標は、ユーザーが行ごとに編集できるようにすることです。たとえば、最初に最初の行を編集し、準備ができたら (つまり、ユーザーが必要なデータを入力します)、次に 2 番目の行などを編集できるようにすることです。

「MSアクセステーブル」と同様の機能が必要です

4

1 に答える 1

2

理論的には、これは非常に単純ですが、人々がゼロからコードを作成することはありません。

void QTableWidgetItem::setFlags(Qt::ItemFlags flags)1) を使用して、項目を編集可能および編集不可にする必要があります。必要に応じて、各アイテムにこの方法を使用できます。

のドキュメントから、次の列挙値の説明を参照してくださいQt::ItemFlags

Qt::ItemIsEditable 2 編集可能です。

2) それが完了したら、カスタム スロットを、編集したアイテムの対応する信号に接続する必要があります。スロットは、セルの編集可能な機能をそれぞれ再配置します。

関心のある関連シグナルは次のとおりです。

* void QTableWidget::cellChanged(int row, int column) [signal]
* void QTableWidget::currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn) [signal]
* void QTableWidget::currentItemChanged(QTableWidgetItem * current, QTableWidgetItem * previous) [signal]
* void QTableWidget::itemChanged(QTableWidgetItem * item) [signal]

次に、次のようなものが必要になります。

connect(myQTableWidgetSubclass, SIGNAL(selectedSignalFromAbove), this, SLOT(mySlotInTheClass));

// ...

void MyClass::mySlotInTheClass(...)
{
    // ...
    myTableWidgetItemX.setFlags(...);
    // ...
}
于 2013-09-26T19:01:44.017 に答える