Russian Qt Forum
Ноябрь 06, 2024, 02:24 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема с редактированием текста в компоненте label  (Прочитано 5493 раз)
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
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Декабрь 06, 2009, 01:10 »

regan32, лучшеб ты ui-файл выложил.
Записан

Юра.
regan32
Гость
« Ответ #2 : Декабрь 06, 2009, 01:29 »

не знаю как тут прикреплять файлы
залил на файлообменник
http://slil.ru/28300463
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #3 : Декабрь 06, 2009, 02:10 »

форма ведёт себя в соответствии с тем, какие сигналы с какими слотами соединены:
Записан

Юра.
regan32
Гость
« Ответ #4 : Декабрь 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 от слайдера и комбо бокса(увеличивал/уменьшал шрифт и менял его соответственно)


« Последнее редактирование: Декабрь 06, 2009, 03:23 от regan32 » Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #5 : Декабрь 06, 2009, 06:14 »

ui_designform.h не нужно руками трогать, в нём об это написано.
Делай соединение в своём файле, в котором используешь ui_designform.h.

Цитировать
QObject::connect(fontComboBox, SIGNAL(currentFontChanged(QFont)), label, SLOT(setFont(QFont)));
QObject::connect(horizontalSlider, SIGNAL(valueChanged(int)), label, SLOT(setPointSize(int)));
Где ты нашёл такие слоты у QLabel?
« Последнее редактирование: Декабрь 06, 2009, 06:15 от lit-uriy » Записан

Юра.
regan32
Гость
« Ответ #6 : Декабрь 06, 2009, 10:17 »

Цитировать
Где ты нашёл такие слоты у QLabel?взял функцию от QLabel...
взял функцию от QLabel... то есть получается так делать нельзя понятно
Цитировать
Делай соединение в своём файле, в котором используешь ui_designform.h.
так в desinere тоже нет таких слотов который мне нужны я сколько не смотрел нет того чего надо,
то есть получается что таких сигналов нет или я их не могу найти -.-
а можно переопределить Qlabel и дописать эти слоты? если можно то как?
или есть какой-то другой вариант создать их?
« Последнее редактирование: Декабрь 06, 2009, 10:23 от regan32 » Записан
spectre71
Гость
« Ответ #7 : Декабрь 06, 2009, 10:30 »

Цитировать
Где ты нашёл такие слоты у QLabel?взял функцию от QLabel...
взял функцию от QLabel... то есть получается так делать нельзя понятно
Цитировать
Делай соединение в своём файле, в котором используешь ui_designform.h.
так в desinere тоже нет таких слотов который мне нужны я сколько не смотрел нет того чего надо,
то есть получается что таких сигналов нет или я их не могу найти -.-
а можно переопределить Qlabel и дописать эти слоты? если можно то как?
или есть какой-то другой вариант создать их?

Можно.

Код
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);}
};
Записан
regan32
Гость
« Ответ #8 : Декабрь 06, 2009, 11:38 »

Цитировать
Код
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);}
};
так а где это написать т.к. есть ui_...h файл который нельзя редактировать
но все описано в нем
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #9 : Декабрь 06, 2009, 15:50 »

>>так а где это написать
Яж тебе говорю:
>"Делай соединение в своём файле, в котором используешь ui_designform.h."

В своей программе сделай слоты подходящие и с ними соедини сигналы от fontComboBox и horizontalSlider
Записан

Юра.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.15 секунд. Запросов: 23.