Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Примерный ученик от Июля 14, 2013, 22:07



Название: QT 4.5 Windows XP неперерисовывает
Отправлено: Примерный ученик от Июля 14, 2013, 22:07
Код:
		QTableWidgetItem *itm;
itm=tableWidget_C->item(row,7);
itm->setText(QString::number(i));
qApp->processEvents();

периодически меняются значения ячейки, но перерисовка не происходит, пока не кликнуть по таблице.


Название: Re: QT 4.5 Windows XP неперерисовывает
Отправлено: Bepec от Июля 14, 2013, 22:15
Делегат не переопределён?

Всё отрисовываться должно нормально, если, конечно, вы не переопределяли tableWidget и делегаты.


Название: Re: QT 4.5 Windows XP неперерисовывает
Отправлено: thechicho от Июля 14, 2013, 22:19
а почему 4.5?
последняя на данный момент 4.8.5
и 5 версия активно развивается.
http://qt-project.org/downloads


Название: Re: QT 4.5 Windows XP неперерисовывает
Отправлено: Bepec от Июля 14, 2013, 22:23
Потому что многие работают в компаниях. А компании переходят на что-то новое только по серьёзным причинам.


Название: Re: QT 4.5 Windows XP неперерисовывает
Отправлено: Примерный ученик от Июля 14, 2013, 22:34
Делегат не переопределён?

Всё отрисовываться должно нормально, если, конечно, вы не переопределяли tableWidget и делегаты.

Стандартный QTableWidget.
Ничего не переопределялось.
Текстовые строки отображаются.


Название: Re: QT 4.5 Windows XP неперерисовывает
Отправлено: Bepec от Июля 14, 2013, 23:04
Попробуйте принудительно обновлять саму таблицу.


Название: Re: QT 4.5 Windows XP неперерисовывает
Отправлено: Примерный ученик от Июля 15, 2013, 07:59
Если делать hide/show  QTableWidget каждый раз, то отображается. Но крайне неприятно мигает форма.


Название: Re: QT 4.5 Windows XP неперерисовывает
Отправлено: Bepec от Июля 15, 2013, 08:06
update попробуйте.


Название: Re: QT 4.5 Windows XP неперерисовывает
Отправлено: thechicho от Июля 15, 2013, 09:15
//Потому что многие работают в компаниях. А компании переходят на что-то новое только по серьёзным причинам.

чтобы обновиться до 4.8.5 с .4.5 в коммерческой Qt надо заплатить?
у меня сложилось впечатление, что ТС нубас и просто не знает, что пытается писать на старой версии, в которой, возможно, его проблема - это баг. и в более новой версии он был исправлен, возможно.


Название: Re: QT 4.5 Windows XP неперерисовывает
Отправлено: Примерный ученик от Июля 15, 2013, 10:16
//Потому что многие работают в компаниях. А компании переходят на что-то новое только по серьёзным причинам.

чтобы обновиться до 4.8.5 с .4.5 в коммерческой Qt надо заплатить?
у меня сложилось впечатление, что ТС нубас и просто не знает, что пытается писать на старой версии, в которой, возможно, его проблема - это баг. и в более новой версии он был исправлен, возможно.
Может и нубас. Но если нечего посоветовать кроме обновления версии - лучше помолчите ::)


Название: Re: QT 4.5 Windows XP неперерисовывает
Отправлено: Примерный ученик от Июля 15, 2013, 10:18
update попробуйте.

Код:
		tableWidget_C->update();
qApp->processEvents();
не помогает


Название: Re: QT 4.5 Windows XP неперерисовывает
Отправлено: _OLEGator_ от Июля 15, 2013, 10:21
Насколько я помню, версия 4.5 была довольно сырой и переходной, была полностью переработана предыдущая версия библиотеки. Поэтому совет об обновлении версии - вполне резонный и не стоит воспринимать его в штыки. Проще объяснить один раз - почему нет возможности обновляться, чтобы не поднимался этот вопрос.


Название: Re: QT 4.5 Windows XP неперерисовывает
Отправлено: Примерный ученик от Июля 15, 2013, 10:29
QT 4.5.3 менять не могу, ТЗ


Название: Re: QT 4.5 Windows XP неперерисовывает
Отправлено: Bepec от Июля 15, 2013, 10:32
Есть ТЗ, есть документы в которых написана цифра 4.5.3. (в моём случае 4.7.2). Чтобы поменять эти цифры пришлось бы потрясти около 8 человек + пересылка документов в москву/обратно. Без существенных причин такое делать никто не будет. Переход ради перехода не оправдывает затрат и седины.

Попробуйте выяснить что там у вас происходит - если при клике изменяется - просто пошлите клик таблице. Это топорный костыль, но а вдруг.

 


Название: Re: QT 4.5 Windows XP неперерисовывает
Отправлено: thechicho от Июля 15, 2013, 11:19
4.7 версия вполне себе хороший продукт. насчет 4.5 не уверен.
если у ТС не хватает воли настоять на том, что 4.5 версия морально устарела и надо бы обновить, то это его проблемы)
а что лучше мне, я сам решаю, в отличии от вас :D

а чтобы понять в чем проблема, могли бы проверить, например:
в других ОС есть эта проблема с этой версией библиотеки.
сохраняется ли эта проблема при использовании новой версии библиотеки.

исходя из этого уже можно было бы делать вывод баг это или нет. и производить дальнейшие поиски решения проблемы, если они имеют смысл, либо обновляться.


Название: Re: QT 4.5 Windows XP неперерисовывает
Отправлено: Bepec от Июля 15, 2013, 11:57
 thechicho -  от тебя другого я и не ожидал :) 
"Мне хорошо, я сам решаю. А если ты не можешь настоять это твои проблемы"  ;D ;D ;D Узкий взгляд :)

По хорошему надо тупо посмотреть что у вас происходит. Можете код выложить? Точнее проект? Вдруг что-то не так в вашем коде?


Название: Re: QT 4.5 Windows XP неперерисовывает
Отправлено: Примерный ученик от Июля 16, 2013, 18:03
создание
Код:
	for (long i=0;i<maxClient;i++)
{
QTableWidgetItem *itm[255];
for (int j=0;j<numbCol;j++)
{
itm[j]=new QTableWidgetItem("");
if (j>1) itm[j]->setFlags(Qt::NoItemFlags);
tableWidget_C->setItem(i,j,itm[j]);
}
}

использоание
Код:
		QTableWidgetItem *itm;
...
itm=tableWidget_C->item(row,3);
itm->setText(dt.date().toString(Qt::LocalDate)+" "+dt.time().toString());
...
itm=tableWidget_C->item(row,9);
itm->setText(QString::number(dat));
...
tableWidget_C->update();
qApp->processEvents();

на UDP порт приходят данные и отображаются в таблице.

Самое непонятное: отображаемое в 0-й строке проявляется только после завершения приема(щелчков по ячейках строки)
а во всех остальных строках - все нормально, по мере поступления информации ???


Название: Re: QT 4.5 Windows XP неперерисовывает
Отправлено: Примерный ученик от Июля 16, 2013, 20:29
Есть ТЗ, есть документы в которых написана цифра 4.5.3. (в моём случае 4.7.2). Чтобы поменять эти цифры пришлось бы потрясти около 8 человек + пересылка документов в москву/обратно. Без существенных причин такое делать никто не будет. Переход ради перехода не оправдывает затрат и седины.

Попробуйте выяснить что там у вас происходит - если при клике изменяется - просто пошлите клик таблице. Это топорный костыль, но а вдруг.

 

А как клик послать?

Код:
emit tableWidget_C->cellClicked(row,1);

дает

error C2248: 'QTableWidget::cellClicked' : cannot access protected member declared in class 'QTableWidget'


Название: Re: QT 4.5 Windows XP неперерисовывает
Отправлено: Bepec от Июля 16, 2013, 22:10
QApplication
Код:
sendEvent ( QObject *, QEvent * ) : bool
Туда кей или моузе Евент суйте.


Название: Re: QT 4.5 Windows XP неперерисовывает
Отправлено: thechicho от Июля 17, 2013, 05:44
http://www.youtube.com/watch?v=77a6DXxmY48