#ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include #include namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private: Ui::MainWindow *ui; int line_count; QTableWidgetItem * displayLine (QString name, QString value); void displayProperty (const QObject * obj, QMetaProperty prop); void displayObject (QObject * obj); }; #endif // MAINWINDOW_H #include "mainwindow.h" #include "ui_mainwindow.h" #include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi (this); displayObject (ui->pushButton); } MainWindow::~MainWindow() { delete ui; } QTableWidgetItem * MainWindow::displayLine (QString name, QString value) { int line = line_count; line_count ++; if (ui->tableWidget->rowCount() < line_count) ui->tableWidget->setRowCount (line_count); QTableWidgetItem * item = new QTableWidgetItem; item->setText (name); item->setForeground(QColor ("blue")); ui->tableWidget->setItem (line, 0, item); item = new QTableWidgetItem; item->setText (value); item->setForeground(QColor ("blue")); ui->tableWidget->setItem (line, 1, item); return item; } void MainWindow::displayProperty (const QObject * obj, QMetaProperty prop) { QString name = prop.name(); QString value = prop.read (obj).toString(); displayLine (name, value); } void MainWindow::displayObject (QObject * obj) { line_count = 0; ui->tableWidget->setColumnCount(2); ui->tableWidget->setRowCount(10); QStringList list; list << "Name" << "Value"; ui->tableWidget->setHorizontalHeaderLabels (list); const QMetaObject * type = obj->metaObject (); int cnt = type->propertyCount(); for (int inx = 0; inx < cnt; inx++) { // #include QMetaProperty prop = type->property (inx); displayProperty (obj, prop); } }