#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QTableWidget>
#include <QMetaProperty>
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 <QMetaProperty>
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>
QMetaProperty prop = type->property (inx);
displayProperty (obj, prop);
}
}