Есть визард с несколькими страничками. На одной из стриниц QWizardPage есть QComboBox *poet с двумя c
строками "Пушкин" и "Есенин". В этой странице регистрирую поле registerField("stopBit*", poet);. В визарде в accept() пытаюсь получить
QString select = field("stopBit").toString();
в результате получаю в select либо "0", либо "1". Т.е. индекс. А нужен текст. "Пушкин" или "Есенин". По умолчанию в поле stopBit будет регистрироваться свойство currentIndex для QComboBox по сигналу currentIndexChanged(). Как Изменить умолчания? Нужно чтоб регистриовалось свойство currentText. В примерах Qt ни чего подобного не нашел.
Пробывал registerField("stopBit", poet, "currentText"); - при такой регистрации select получается "Пушкин" или "Есенин". То что нужно. Но тогда кнопка "Next"("Finish") не блокируеться при невыбранном поэте.
Пробывал registerField("stopBit*", poet, "currentText"); - кнопка "Next"("Finish") блокируеться, но при выборе не разблокируетя и соответственно в accept() я не попадаю.
Кто-нибудь пробывал поменять свойства или сигналы определенные по умолчанию и перечисленные в описании void QWizardPage::registerField? Какой синтакс у функций QWizard::setDefaultProperty() и QWizardPage::registerField()?
registerField("stopBits*", "currentText", "currentIndexChanged()"); //такой?
или
registerField("stopBits*", "QString currentText", "currentIndexChanged(const QString&)"); //такой?
ps
Примерный код
finddialog.h
#ifndef FINDDIALOG_H
#define FINDDIALOG_H
#include <QWizard>
class ConnectionWizard : public QWizard
{
public:
ConnectionWizard();
~ConnectionWizard();
void accept();
};
class MyPage : public QWizardPage
{
public:
MyPage(QWidget *parent = 0);
~MyPage();
};
#endif
main.cpp
#include <QApplication>
#include <QtGui>
#include "finddialog.h"
ConnectionWizard::ConnectionWizard()
: QWizard()
{
setModal(true);
addPage(new MyPage);
}
ConnectionWizard::~ConnectionWizard(){}
void ConnectionWizard::accept()
{
QString a = field("stopBit").toString();
//здесь ставлю т.остановки
QDialog::accept();
}
MyPage::MyPage(QWidget *parent)
: QWizardPage(parent)
{
QLabel* stopLabel = new QLabel(trUtf8("книга:"));
QComboBox *poet = new QComboBox;
poet->addItem(trUtf8("Пушкин"));
poet->addItem(trUtf8("Есенин"));
poet->setCurrentIndex(-1);
stopLabel->setBuddy(poet);
registerField("stopBit*", poet, "QString currentText", "currentIndexChanged(const QString& currentText )");
QGridLayout *layout = new QGridLayout;
layout->addWidget(stopLabel, 0, 0);
layout->addWidget(poet, 0, 1);
setLayout(layout);
}
MyPage::~MyPage(){}
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
ConnectionWizard dialog;
dialog.exec();
return 0;
}