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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Бегущий текст  (Прочитано 23289 раз)
Mixolap
Гость
« : Сентябрь 22, 2008, 21:41 »

Посоветуйте виджет для отображения бегущего текста.
Записан
ритт
Гость
« Ответ #1 : Сентябрь 22, 2008, 22:06 »

QWidget Улыбающийся
Записан
niXman
Гость
« Ответ #2 : Сентябрь 22, 2008, 23:51 »

Унаследуйся от QLineEdit или QLabel, и QThread перегрузи виртуальную функцию run() и в ней реализуй алгоритм бегущей строки.
Код:
class MyLabel: public QLabel, public QThread {
   Q_OBJECT
public:
   MyLabel(QWidget* p = 0):QLabel(p),QThread(p) {}
   ...
   void run() {
   ... // Тут алгоритм бегущей строки.
   }
};
Алгоритмов бегущей строки много. Один из вариантов - на основе очереди.
Удачи.
Записан
ритт
Гость
« Ответ #3 : Сентябрь 23, 2008, 00:32 »

Код:
class MyLabel: public QLabel, public QThread {
   Q_OBJECT

и что, скомпилится?
Записан
vaprele07
Гость
« Ответ #4 : Сентябрь 23, 2008, 03:37 »

тред на бегущую строку жестоко)))
примеры рулят: http://doc.trolltech.com/4.1/widgets-wiggly.html
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #5 : Сентябрь 23, 2008, 14:26 »

Код:
class MyLabel: public QLabel, public QThread {
   Q_OBJECT

и что, скомпилится?

В Qt3 да, и даже будет работать Подмигивающий
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Mixolap
Гость
« Ответ #6 : Сентябрь 23, 2008, 17:34 »

Ага, спасибо, сделаю через QLabel и QTimer  Подмигивающий
Получится бегущая строка с новостями rss.
Записан
ритт
Гость
« Ответ #7 : Сентябрь 23, 2008, 19:50 »

Код:
class MyLabel: public QLabel, public QThread {
   Q_OBJECT

и что, скомпилится?

В Qt3 да, и даже будет работать Подмигивающий

у него в подписи "qt-4.4.2 opensource" ^_^
Записан
niXman
Гость
« Ответ #8 : Сентябрь 23, 2008, 21:34 »

Код:
class MyLabel: public QLabel, public QThread {
   Q_OBJECT

и что, скомпилится?

В Qt3 да, и даже будет работать Подмигивающий

у него в подписи "qt-4.4.2 opensource" ^_^
Не понял прикола...
Записан
ритт
Гость
« Ответ #9 : Сентябрь 23, 2008, 21:46 »

гцц говорит что-то вроде
Цитировать
Warning: Class MyLabel inherits from two QObject subclasses QLabel and QThread. This is not supported!
не знаю будет ли работать - не проверял...да и гуёвые объекты должны быть в одном потоке, насколько я помню.
Записан
kirill
Гость
« Ответ #10 : Сентябрь 25, 2008, 05:40 »

да и гуёвые объекты должны быть в одном потоке, насколько я помню.

Создаваться - да, управляться - нет. Отдай в поток адрес виджета и рули им.
Записан
ритт
Гость
« Ответ #11 : Сентябрь 25, 2008, 07:10 »

и шо, без синхронизации с основным потоком прямо вот так по указателю и рулить?
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #12 : Сентябрь 25, 2008, 12:24 »

Создаваться - да, управляться - нет. Отдай в поток адрес виджета и рули им.

...и твое приложение вывалиться в кору

ЗЫ: Все операции с гуем должны быть ТОЛЬКО в гуевом потоке!
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Mixolap
Гость
« Ответ #13 : Сентябрь 25, 2008, 20:32 »

Обошелся без QTimer (хватило встроенного в QObject).
Просьба покритиковать:
http://qtfaq.ru/tiki-index.php?page=runline
Записан
Karl-Philipp
Гость
« Ответ #14 : Сентябрь 26, 2008, 00:30 »

Обошелся без QTimer (хватило встроенного в QObject).
Просьба покритиковать:
http://qtfaq.ru/tiki-index.php?page=runline
тестировал на Celeron 1.1, встроенное видео:
Результат:
Строчка "бежит" с некими задержками на любой скорости прокрутки (может так и надо - не знаю), но больше всего напрягает неравномерность задержек по длительности. Текст будто притормаживает в определенные промежутки.
А вобще интересная идея
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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