Название: Проблема с редактированием текста в компоненте label Отправлено: regan32 от Декабрь 06, 2009, 00:51 есть созданный designerom класс окна в нем компоненты label c текстом slider и fontComboBox
необходимо чтоб по изменению положения слайдера и фона текст в label соответственно менялся код: class Ui_designForm { public: QLabel *label; QFontComboBox *fontComboBox; QComboBox *comboBox; QSlider *horizontalSlider; void setupUi(QWidget *designForm) { if (designForm->objectName().isEmpty()) designForm->setObjectName(QString::fromUtf8("designForm")); designForm->resize(421, 501); QFont font; font.setFamily(QString::fromUtf8("Myriad Pro Cond")); font.setPointSize(10); designForm->setFont(font); label = new QLabel(designForm); label->setObjectName(QString::fromUtf8("label")); label->setGeometry(QRect(60, 170, 301, 191)); label->setPalette( QPalette( QBrush(QColor(255,255,255))); label->setAlignment(Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop); fontComboBox = new QFontComboBox(designForm); fontComboBox->setObjectName(QString::fromUtf8("fontComboBox")); fontComboBox->setGeometry(QRect(250, 80, 159, 22)); comboBox = new QComboBox(designForm); comboBox->setObjectName(QString::fromUtf8("comboBox")); comboBox->setGeometry(QRect(30, 70, 69, 22)); horizontalSlider = new QSlider(designForm); horizontalSlider->setObjectName(QString::fromUtf8("horizontalSlider")); horizontalSlider->setGeometry(QRect(150, 40, 160, 21)); horizontalSlider->setOrientation(Qt::Horizontal); #ifndef QT_NO_SHORTCUT label->setBuddy(fontComboBox); #endif // QT_NO_SHORTCUT retranslateUi(designForm); QObject::connect(fontComboBox, SIGNAL(currentFontChanged(QFont)), label, SLOT(setFont(QFont))); \\ вроде все нормально в окне ничего не изменяется QObject::connect(horizontalSlider, SIGNAL(valueChanged(int)), label, SLOT(setPointSize(int))); \\может чего-то нехватает помогите плиз QMetaObject::connectSlotsByName(designForm); } // setupUi void retranslateUi(QWidget *designForm) { Q_UNUSED(designForm); } // retranslateUi }; namespace Ui { class designForm: public Ui_designForm {}; } // namespace Ui Название: Re: Проблема с редактированием текста в компоненте label Отправлено: lit-uriy от Декабрь 06, 2009, 01:10 regan32, лучшеб ты ui-файл выложил.
Название: Re: Проблема с редактированием текста в компоненте label Отправлено: regan32 от Декабрь 06, 2009, 01:29 не знаю как тут прикреплять файлы
залил на файлообменник http://slil.ru/28300463 Название: Re: Проблема с редактированием текста в компоненте label Отправлено: lit-uriy от Декабрь 06, 2009, 02:10 форма ведёт себя в соответствии с тем, какие сигналы с какими слотами соединены:
Название: Re: Проблема с редактированием текста в компоненте label Отправлено: regan32 от Декабрь 06, 2009, 03:22 это в designform.ui так
в ui_designform.h она переопределена на QObject::connect(fontComboBox, SIGNAL(currentFontChanged(QFont)), label, SLOT(setFont(QFont))); QObject::connect(horizontalSlider, SIGNAL(valueChanged(int)), label, SLOT(setPointSize(int))); может в этом и есть проблема но тогда вопрос как сделать так чтоб label реагировал на signali от слайдера и комбо бокса(увеличивал/уменьшал шрифт и менял его соответственно) Название: Re: Проблема с редактированием текста в компоненте label Отправлено: lit-uriy от Декабрь 06, 2009, 06:14 ui_designform.h не нужно руками трогать, в нём об это написано.
Делай соединение в своём файле, в котором используешь ui_designform.h. Цитировать QObject::connect(fontComboBox, SIGNAL(currentFontChanged(QFont)), label, SLOT(setFont(QFont))); Где ты нашёл такие слоты у QLabel?QObject::connect(horizontalSlider, SIGNAL(valueChanged(int)), label, SLOT(setPointSize(int))); Название: Re: Проблема с редактированием текста в компоненте label Отправлено: regan32 от Декабрь 06, 2009, 10:17 Цитировать Где ты нашёл такие слоты у QLabel?взял функцию от QLabel... взял функцию от QLabel... то есть получается так делать нельзя понятноЦитировать Делай соединение в своём файле, в котором используешь ui_designform.h. так в desinere тоже нет таких слотов который мне нужны я сколько не смотрел нет того чего надо,то есть получается что таких сигналов нет или я их не могу найти -.- а можно переопределить Qlabel и дописать эти слоты? если можно то как? или есть какой-то другой вариант создать их? Название: Re: Проблема с редактированием текста в компоненте label Отправлено: spectre71 от Декабрь 06, 2009, 10:30 Цитировать Где ты нашёл такие слоты у QLabel?взял функцию от QLabel... взял функцию от QLabel... то есть получается так делать нельзя понятноЦитировать Делай соединение в своём файле, в котором используешь ui_designform.h. так в desinere тоже нет таких слотов который мне нужны я сколько не смотрел нет того чего надо,то есть получается что таких сигналов нет или я их не могу найти -.- а можно переопределить Qlabel и дописать эти слоты? если можно то как? или есть какой-то другой вариант создать их? Можно. Код
Название: Re: Проблема с редактированием текста в компоненте label Отправлено: regan32 от Декабрь 06, 2009, 11:38 Цитировать Код так а где это написать т.к. есть ui_...h файл который нельзя редактироватьC++ (Qt) class MyLabel : public QLabel { Q_OBJECT public slots: void slotSetPointSize(int value) {QFont Font = font(); Font.setPointSize(value); setFont(Font);} void slotSetFont(const QFont & Font) {setFont(Font);} }; но все описано в нем Название: Re: Проблема с редактированием текста в компоненте label Отправлено: lit-uriy от Декабрь 06, 2009, 15:50 >>так а где это написать
Яж тебе говорю: >"Делай соединение в своём файле, в котором используешь ui_designform.h." В своей программе сделай слоты подходящие и с ними соедини сигналы от fontComboBox и horizontalSlider |