Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [qt (html)] разношрифтный текст на кнопке 
V
    Опции темы
gordmiand
Дата 22.3.2010, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 15.4.2007

Репутация: нет
Всего: 0



Привет!
Хочу вывести текст различным шрифтом:
На Label вроде все получается верно:
Код

label->setText("<p style='font-family:\"MS Shell Dlg 2\"'>Hello - <span style='font-family:\"Symbol\"'>a"); 


а почему на кнопку такая команда не работает верно? – выводится просто строка символов, указанных в setText, а не надпись “Hello а (то есть альфа)”??? 
как мне вывести текст на кнопку разным шрифтом? 

PM MAIL   Вверх
gordmiand
Дата 23.3.2010, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 15.4.2007

Репутация: нет
Всего: 0



Пробовал так:

Код

button->setText("  ");

label1=new QLabel(button);
label1->setText(" <p style='font-family:\"MS Shell Dlg 2\"'>Hello- <span style='font- 
                                        family:\"Symbol\"'>a  ");
label1->setGeometry(25,2,25,20);



не лучший, конечно, вариант, но на правду похоже…. Но как же тогда щелкать на эту кнопку, если щелкая по кнопке можно щелкнуть по этому лейблу и соот-но ничего не произойдет…как быть? Ведь у лейбла нет сигнала онклик…или можно иным способом вывести текст разными шрифтами на кнопку? Подскажииииите….


Это сообщение отредактировал(а) gordmiand - 23.3.2010, 14:19
PM MAIL   Вверх
borisbn
Дата 23.3.2010, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 48
Всего: 135



Цитата(gordmiand @  23.3.2010,  14:18 Найти цитируемый пост)
Ведь у лейбла нет сигнала онклик

можно наследоваться от QLabel, переписать mousePressEvent

честно говоря не лучшее решение, но лучше ничего в голову не лезет.
Буду вместе с Вами ждать ответа, т.к. тоже хочу кнопку с html-текстом


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
gordmiand
Дата 23.3.2010, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 15.4.2007

Репутация: нет
Всего: 0



вот задачка...ну почему так сделано, что в Label можно выводить разношрифтный текст (и использовать хтмл в принципе), а в эдит или кнопку - нет...
тогда подскажите пример на переопределение этого самого mousePressEvent (если нельзя сделать это как-то более грамотно)....
PM MAIL   Вверх
borisbn
Дата 23.3.2010, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 48
Всего: 135



Цитата(gordmiand @  23.3.2010,  14:32 Найти цитируемый пост)
а в эдит или кнопку - нет...

в едит можно, а на кнопку нельзя, потому, что отображением текста на кнопке занимается не Qt, а ОС

Код

class ClickableLabel : public QLabel
{
Q_OBJECT

public:
    ClickableLabel( QObject * parent = 0 )
        : QLabel( parent )
    {
    }
protected:
    void mousePressEvent( QMouseEvent * event )
    {
        QLabel::mousePressEvent( event );
        emit clicked();
    }
signals:
    void clicked();
};

...
button->setText("  ");

label1=new ClickableLabel( button );
label1->setText(" <p style='font-family:\"MS Shell Dlg 2\"'>Hello- <span style='font- 
                                        family:\"Symbol\"'>a  ");
label1->setGeometry(25,2,25,20);

connect( label1, SIGNAL( clicked() ), SLOT( имя слота ) );



Это сообщение отредактировал(а) borisbn - 23.3.2010, 15:36


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
SABROG
Дата 23.3.2010, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Обсуждалось на другом форуме: http://www.prog.org.ru/topic_6457_0.html

Цитата(borisbn @  23.3.2010,  15:34 Найти цитируемый пост)
потому, что отображением текста на кнопке занимается не Qt, а ОС

Qt, но для кнопок используется более быстрая и легковесная техника нежели для QLabel. Скорее всего при обилии таких HTML кнопок приложение будет дико тормозить.

Цитата(gordmiand @  23.3.2010,  14:18 Найти цитируемый пост)
Ведь у лейбла нет сигнала онклик…

Как один из вариантов:

Код

QMessageBox* msgBox = new QMessageBox(this);
    msgBox->setText("Clicked!");

    QStateMachine* machine = new QStateMachine(this);
    QState* s1 = new QState(machine);
    QMouseEventTransition* mouseTrans =
            new QMouseEventTransition(ui->label, QEvent::MouseButtonRelease, Qt::LeftButton, s1);
    QObject::connect(mouseTrans, SIGNAL(triggered()), msgBox, SLOT(exec()));
    machine->setInitialState(s1);
    machine->start();


Это сообщение отредактировал(а) SABROG - 23.3.2010, 18:57


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
gordmiand
Дата 23.3.2010, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 15.4.2007

Репутация: нет
Всего: 0



мда...если так все сложно с выводом греческих символов на кнопку, то сделаю как сам хотел - вывод лейбла на кнопку + как SABROG посоветовал - обработчик онклик для лейбла... smile  

+ подскажите пож-та юникоды для символов "альфа" и "бетта"... 

Это сообщение отредактировал(а) gordmiand - 23.3.2010, 21:02
PM MAIL   Вверх
SABROG
Дата 23.3.2010, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



α - 0x03B1
β - 0x03B2


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
gordmiand
Дата 23.3.2010, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 15.4.2007

Репутация: нет
Всего: 0



спасибо за юникоды....неужели нельзя все-таки сделать как-то проще? что же такая проблема с этими греческими буквами на кнопке..
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0500 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.