QTableWidget をサブクラス化して、いくつかの機能を追加しました。私もそのmyQTableWidgetSubclass->setRowCount(10);
方法を使ってきました。
問題は、テーブルが編集できないことです。目標は、ユーザーが行ごとに編集できるようにすることです。たとえば、最初に最初の行を編集し、準備ができたら (つまり、ユーザーが必要なデータを入力します)、次に 2 番目の行などを編集できるようにすることです。
「MSアクセステーブル」と同様の機能が必要です
QTableWidget をサブクラス化して、いくつかの機能を追加しました。私もそのmyQTableWidgetSubclass->setRowCount(10);
方法を使ってきました。
問題は、テーブルが編集できないことです。目標は、ユーザーが行ごとに編集できるようにすることです。たとえば、最初に最初の行を編集し、準備ができたら (つまり、ユーザーが必要なデータを入力します)、次に 2 番目の行などを編集できるようにすることです。
「MSアクセステーブル」と同様の機能が必要です
理論的には、これは非常に単純ですが、人々がゼロからコードを作成することはありません。
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(...);
// ...
}