アプリケーションに QTableWidget があります。実行時に QPushButton ウィジェットをテーブル ウィジェットのセルに追加しています。ここで、この新しく追加されたボタンがクリックされたときに、何らかのアクションを実行する必要があります。このボタンを含むセルの行と列の詳細を取得する必要があります。これらの詳細を取得するにはどうすればよいですか? 私は Qt が初めてで、助けを求めています。
ありがとう、ラケッシュ。
アプリケーションに QTableWidget があります。実行時に QPushButton ウィジェットをテーブル ウィジェットのセルに追加しています。ここで、この新しく追加されたボタンがクリックされたときに、何らかのアクションを実行する必要があります。このボタンを含むセルの行と列の詳細を取得する必要があります。これらの詳細を取得するにはどうすればよいですか? 私は Qt が初めてで、助けを求めています。
ありがとう、ラケッシュ。
これを行う 1 つの方法は、Qt のプロパティ システムを利用し、挿入時に動的な行と列のプロパティをボタンに追加することです。これが例です。
# table_button_11361328.pro
QT += core gui
TARGET = table_button_11361328
TEMPLATE = app
SOURCES += main.cpp
// main.cpp
#include <QApplication>
#include <QTableWidget>
#include <QPushButton>
#include <QLabel>
class Display : public QLabel
{
Q_OBJECT
public:
Display(QWidget* parent = 0) : QLabel(parent) {}
public slots:
void indicate() {
QWidget * w = qobject_cast<QWidget*>(sender());
if (w == 0) return;
int row = w->property("tableRow").toInt();
int column = w->property("tableColumn").toInt();
setText(QString("* %1,%2 *").arg(row).arg(column));
}
};
QWidget * setWidget(QTableWidget* table, int row, int column, QWidget * w)
{
w->setProperty("tableRow", row);
w->setProperty("tableColumn", column);
table->setCellWidget(row, column, w);
return w;
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTableWidget table;
Display * d = new Display();
table.setRowCount(3);
table.setColumnCount(2);
table.setCellWidget(2, 0, d);
d->connect(setWidget(&table, 0, 0, new QPushButton("0,0")), SIGNAL(clicked()), SLOT(indicate()));
d->connect(setWidget(&table, 0, 1, new QPushButton("0,1")), SIGNAL(clicked()), SLOT(indicate()));
d->connect(setWidget(&table, 1, 0, new QPushButton("1,0")), SIGNAL(clicked()), SLOT(indicate()));
d->connect(setWidget(&table, 1, 1, new QPushButton("1,1")), SIGNAL(clicked()), SLOT(indicate()));
table.show();
return a.exec();
}
#include "main.moc"