#include "mainwindow.h" #include "ui_mainwindow.h" #include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); } MainWindow::~MainWindow() { delete ui; } void MainWindow::info (QObject * obj) { const QMetaObject * cls = obj->metaObject (); QString s = cls->className(); this->setWindowTitle (s); ui->tableWidget->setColumnCount (2); /* int n = cls->methodCount (); ui->tableWidget->setRowCount (n); for (int i = 0; i < n; i++) { QMetaMethod m = cls->method (i); QTableWidgetItem * item = new QTableWidgetItem; item->setText (m.name ()); item->setToolTip (m.methodSignature ()); ui->tableWidget->setItem (i, 0, item); QString s = m.name (); if (s == "setChecked") { QGenericReturnArgument result; m.invoke (obj, Qt::AutoConnection, result, Q_ARG (bool, true)); } } */ int n = cls->propertyCount (); ui->tableWidget->setRowCount (n); for (int i = 0; i < n; i++) { // #include QMetaProperty p = cls->property (i); QTableWidgetItem * item = new QTableWidgetItem; item->setText (p.name ()); item->setToolTip (p.typeName()); ui->tableWidget->setItem (i, 0, item); QVariant v = p.read (obj); item = new QTableWidgetItem; item->setText (v.toString()); ui->tableWidget->setItem (i, 1, item); /* QString s = p.name (); if (s == "enabled") { v = false; p.write (obj, v); } s = p.name (); if (s == "text") { v = "Nadpis"; p.write (obj, v); } */ } } class MyItem : public QTreeWidgetItem { public: QObject * obj; }; void MainWindow::branch (QTreeWidgetItem * above, QObject * obj) { MyItem * item = new MyItem (); item->setText (0, obj->objectName() + " : " + obj->metaObject()->className ()); item->obj = obj; if (above == NULL) ui->treeWidget->addTopLevelItem (item); else above->addChild (item); QList list = obj->children(); foreach (QObject * elem, list) { branch (item, elem); } } void MainWindow::on_pushButton_clicked() { info (ui->checkBox); branch (NULL, this); // info (ui->pushButton); // info (ui->tableWidget); // info (this); /* ui->tableWidget->setColumnCount (2); int n = ui->tableWidget->rowCount(); ui->tableWidget->setRowCount (n+1); QTableWidgetItem * item = new QTableWidgetItem; item->setText("abc"); item->setBackgroundColor (QColor ("yellow")); item->setForeground (QColor ("red")); item->setToolTip ("ABC"); ui->tableWidget->setItem (n, 0, item); */ } void MainWindow::on_treeWidget_itemSelectionChanged() { QList list = ui->treeWidget->selectedItems(); if (list.count() == 1) { QTreeWidgetItem * item = list [0]; MyItem * myitem = dynamic_cast (item); if (myitem != NULL) // myitem->setForeground (0, QColor ("orange")); info (myitem->obj); } } void MainWindow::on_treeWidget_itemClicked(QTreeWidgetItem *item, int column) { // item->setBackgroundColor(0, QColor ("red")); }