Предлагаю посмотреть на мой вариант таблицы свойств.
Скриншот:
PropertySheet *ps = new PropertySheet(this);
ps->addCaption("Account settings"); // темно-серый заголовок
ps->addPropertyWidget("username", new QTextEdit(this)); // свойство
ps->addPropertyWidget("password", new QTextEdit(this)); // свойство
ps->addCaption("Network settings"); // второй темно-серый заголовок
ps->addPropertyWidget("URL", new QTextEdit(this)); // свойство
ps->addPropertyWidget("Port", new QSpinBox(this)); // свойство
Выложи архив его если не жалко, так же поместим на сайте...
Может разделить на две темы, так как вроде тема одна, а Property Browser'ы разные?
Выложил: http://crossplatform.ru/?q=node/383
Забойно смотрится Только вот как связывать его с конкретным объектом? О_о
По всей видимости он имеет ввиду, что у его Property Browser связывается с виджетом так:
// ** Собственно связывание QPropertyGrid с объектом
QPropertyGrid:::sPropertyDef *def = someClassObject->CreatePropertyDef();
propertyGrid->SetObject( def );
delete[]def;
Вообще говоря, я думал из примера все понятно.
Допустим нам надо чтобы у нас было два свойства, одно текстовое (например host), второе численное (например port). Подходящими виджетами являются виджеты QTextEdit и QSpinBox соответственно, поэтому мы создаем объекты этих виджетов:
m_Host = new QTextEdit(ps);
m_Port = new QSpinBox(ps);
QPropertySheet *ps = new QPropertySheet(this);
m_Host = new QTextEdit(ps);
m_Port = new QSpinBox(ps);
ps->addCaption("Netowrk settings");
ps->addPropertyWidget("host", m_Host);
ps->addPropertyWidget("port", m_Port);
class SettingsDialog : public QDialog {
Q_OBJECT
public:
SettingsDialog(QWidget *parent = 0);
private:
QLineEdit *m_Host;
QSpinBox *m_Port;
};
SettingsDialog::SettingsDialog(QWidget *parent):QDialog(parent) {
PropertySheet *ps = new PropertySheet(this);
m_Host = new QLineEdit(ps);
m_Port = new QSpinBox(ps);
ps->addCaption("Network settings");
ps->addPropertyWidget("host", m_Host);
ps->addPropertyWidget("port", m_Port);
QVBoxLayout *lt = new QVBoxLayout(this);
lt->addWidget(ps);
}
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)