Версия для печати темы
Форум на CrossPlatform.RU _ Qt Общие вопросы _ глюк с QTableWidget
Автор: borune 4.1.2011, 20:45
Господа, помогите разобраться. Полдня копаю и ни к чему не пришел.
Есть такой код:
QTableWidget *table;
....
void MainWindow::my_funct0()
{
table = new QTableWidget(this);
table->setColumnCount(6);
table->setRowCount(2);
table->setGeometry(40,90,10+table->columnWidth(0)+table->columnWidth(1)+table->columnWidth(2)+table->columnWidth(3)+table->columnWidth(4)+table->columnWidth(5),40+table->rowCount()*50);
table->show();
}
Выделение ячеек в таком случае возможно только один раз. То есть при клике мышью на какую-либо ячейку таблицы эта ячейка выделяется цветом, но при клике на другую ячейку сразу после этого выделения не происходит.
Если я изменяю вышеприведенный код вот так:
QTableWidget *table;
....
void MainWindow::my_funct1()
{
table = new QTableWidget(this);
table->show();
delete table; table = new QTableWidget(this);
table->setColumnCount(6);
table->setRowCount(2);
table->setGeometry(40,90,10+table->columnWidth(0)+table->columnWidth(1)+table->columnWidth(2)+table->columnWidth(3)+table->columnWidth(4)+table->columnWidth(5),40+table->rowCount()*50);
table->show();
}
то любая ячейка выделяется сколько угодно раз. Причем если убрать первую функцию show(), то результат будет точно таким же, как и в первом случае.
Объясните, пожалуйста, в чем тут дело.
Автор: borune 4.1.2011, 22:14
Описанная проблема проявляется на 7ке. В ХР ее нету. Версии КуТэ стоят одинаковые.
Автор: Litkevich Yuriy 4.1.2011, 22:46
borune, а компилишь в какой ОСьке?
Автор: borune 5.1.2011, 0:48
Цитата(Litkevich Yuriy @ 4.1.2011, 22:46)
borune, а компилишь в какой ОСьке?
ну соответственно в 7ке и в хр. под линями еще не пробовал)
Автор: ufna 5.1.2011, 0:56
Может скинешь код а главное скомпилированный пример?
Автор: borune 5.1.2011, 2:49
Цитата(ufna @ 5.1.2011, 0:56)
Может скинешь код а главное скомпилированный пример?
код я выше привел. ничего другого я с таблицей не делаю. Точнее делаю, конечно, но при проверке все закомментировал дабы найти место расположения глюка.
Всю программу кидать не имеет смысла, могу создать отдельный проект, где будет только работа с таблицей.
Автор: Litkevich Yuriy 5.1.2011, 2:52
Цитата(borune @ 5.1.2011, 4:49)
могу создать отдельный проект, где будет только работа с таблицей.
вот это и надо, минимальный компилируемый пример, который воспроизводит ошибку. А иначе людям лень будет самим, что-то набивать да компилировать.
Автор: borune 5.1.2011, 12:23
к сожалению, пример не воспроизводит ошибку..надо копать глубже
но вопрос остается..один и тот же код на разных ос работает по-разному..
Автор: ufna 5.1.2011, 12:33
Если в примере ошибки нет, а в проекте есть => косяк скорее всего в каком-нибудь кэше. Очистку проекта и re-qmake делал?
Автор: borune 5.1.2011, 18:52
Цитата(ufna @ 5.1.2011, 12:33)
Если в примере ошибки нет, а в проекте есть => косяк скорее всего в каком-нибудь кэше. Очистку проекта и re-qmake делал?
даже комп перезагружал
Автор: ufna 5.1.2011, 21:29
Весь проект секретен? Можно в личку.
Если на двух оськах не пашет и на примере не воспроизводиться - косяк в конкретной реализации, а тут хз - очень многое может быть.
Автор: DEADHUNT 5.1.2011, 21:38
вся проблема в том что объект удаляется, а наверняка там ещё какой нибудь сигнал вызывается, поэтому в данном случае вместо delete лучше использовать deleteLater
Автор: borune 7.1.2011, 0:43
Цитата(ufna @ 5.1.2011, 21:29)
Весь проект секретен? Можно в личку.
Если на двух оськах не пашет и на примере не воспроизводиться - косяк в конкретной реализации, а тут хз - очень многое может быть.
Ну эта проблема не заслуживает такого серьезного, подхода я думаю)
Только Вы неправильно прочитали - РАБОТАЕТ на хр, и НЕ работает на 7ке)
Это, кстати, не единичный обнаруженный мной случай разной работы одной и той же программы в разных ОС.
DEADHUNT, а что это за deleteLater?
DEADHUNT в смысле чем он тут может помочь?
Автор: ufna 7.1.2011, 1:09
А, ну если работает на ХР и не работает на семерке (что означает на одном компе пашет а на втором нет, дело не в оськах), то дело на 95% в каком-нибудь кэше запавшем, сбившемся компиляторе/IDE и т.п.
Автор: Алексей1153 7.1.2011, 1:12
иногда бывает , что ищешь странный глюк, ищешь... А потом делаешь полный принудительный ребилд всего - и оно начинает работать нормально
а иногда не начинает
Автор: Litkevich Yuriy 7.1.2011, 13:36
а какая версия Qt?
Автор: borune 7.1.2011, 20:03
Цитата(Litkevich Yuriy @ 7.1.2011, 13:36)
а какая версия Qt?
на 4.6.0 в 7ке не работает, на 4.7.0 на 7ке не работает, на хр работает. все сборки 32ух битные
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)