Название: Сброс бегущей строки, помогите решить проблему.
Отправлено: XpycT от Июнь 18, 2010, 08:52
Добрый времени суток. Создаю виджет в правом верхнем углу экрана, в котором выводится статистика сервера(по таймеру раз в 5-10 секунд), а над статистикой бегущую строку(по таймеру) с новостью. Проблема в том, что, когда таймер обновляет статистику (три QLabel), сбрасывается позиция бегущей строки, в результате строка не добегает до конца, обнуляется позиция, и она начинает бежать заново. делал так: C++ (Qt) StatusWidget::StatusWidget(QWidget *parent) { news1 = new QLabel("test news in desctop widget"); // текст с бегущей строкой // Эти три QLabel одбновляются по первому таймеру раз в 5-10 секунд label1= new QLabel("<b>Tirion x2</b>"); online1= new QLabel(tr("<b>Online:</b> -")); uptime1= new QLabel(tr("<b>Uptime:</b> -")); QVBoxLayout *layout = new QVBoxLayout(this); layout->addWidget(news1); layout->addWidget(label1); layout->addWidget(online1); layout->addWidget(uptime1); setLayout(layout); gradient.setColorAt(0, QColor(247, 247, 247, 255)); gradient.setColorAt(1, QColor(187, 187, 187, 255)); gradient.setCoordinateMode(QGradient::ObjectBoundingMode); resize(120, 40); this->move(qApp->desktop()->width()-this->width(),1); // Первый таймер, по которому обновляется статистика сервера // Вот с ним то и проблема - при таймауте он обнуляет позицию бегущей строки emit updateServer(); timer = new QTimer(this); connect(timer, SIGNAL(timeout()), this, SLOT(updateServer())); timer->start((m_settings->value("UpdateTime",10).toInt())*1000); // Второй таймер, отвечающий за бегущую строку. timer1 = new QTimer(this); connect(timer1, SIGNAL(timeout()), this, SLOT(scrollNews())); timer1->start(50); } // Слот перемещения строки влево void StatusWidget::scrollNews(){ news1->move(news1->x()-5,news1->y()); }
Подскажите где проблема ???
Название: Re: Сброс бегущей строки, помогите решить проблему.
Отправлено: Amigo_sa от Июнь 18, 2010, 09:19
Покажите пожалуйста слот updateServer()
Название: Re: Сброс бегущей строки, помогите решить проблему.
Отправлено: XpycT от Июнь 18, 2010, 09:28
C++ (Qt) void StatusWidget::updateServer(){ QString _server=m_settings->value("mServer", "Tirion").toString(); QString _server_url; if(_server=="Tirion"){ label1->setText("<b>Tirion x2</b>"); _servername="Tirion x2"; _server_url="http://isengard.su/tirion.txt"; } QNetworkRequest request; request.setUrl(QUrl(_server_url)); request.setRawHeader("Host","isengard.su"); request.setRawHeader("X-Powered-By","XpycT"); request.setRawHeader("User-Agent", "IsengardTools"); manager->get(request); }
а в void StatusWidget::replyFinished(QNetworkReply* reply) при статусе 200 попросту заполняются QLabelC++ (Qt) label1->setText(tr("<b>%1</b>").arg(rx.cap(1))); ... online1->setText(tr("<b>Online:</b>\t%1").arg(rx.cap(1))); ... uptime1->setText(tr("<b>Uptime:</b>\t%1").arg(rx1.cap(1))); ...
Название: Re: Сброс бегущей строки, помогите решить проблему.
Отправлено: Kolobok от Июнь 18, 2010, 10:44
Думаю, это компоновщик ставит news1 на место. Если сделать resize, анимация тоже ломается?
|