Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.01.2013, 21:03   #1
WarAngel-alk
 
Регистрация: 30.01.2013
Сообщений: 8
По умолчанию [Qt] Вылет при изменении параметров QTableWidgetItem

Создал таблицу QTableWidget 10х10. Хочу, например, изменить цвет ячейки 2х2.
Код:
#include <QtGui/QApplication>
#include <QTableWidget>

#include "mainwindow.h"
#include "ui_mainwindow.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;

    QTableWidget *table = new QTableWidget(&w);
    table->setColumnCount(10);
    table->setRowCount(10);

    table->horizontalHeader()->hide();
    table->verticalHeader()->hide();

    table->item(2, 2)->setBackground(Qt::black); //На этой строке приложение вылетает.

    w.setCentralWidget(table);

    w.show();
    
    return a.exec();
}
Аналогичная ошибка при изменении текста ячейки.

Версия Qt 4.8.0.
WarAngel-alk вне форума Ответить с цитированием
Старый 30.01.2013, 21:57   #2
Артём Волжанкин
Пользователь
 
Аватар для Артём Волжанкин
 
Регистрация: 07.07.2012
Сообщений: 99
По умолчанию

setBackgroundColor попробуй
Человек
Артём Волжанкин вне форума Ответить с цитированием
Старый 31.01.2013, 09:42   #3
WarAngel-alk
 
Регистрация: 30.01.2013
Сообщений: 8
По умолчанию

То же самое. Вообще ошибка при любых изменениях параметров ячейки - текста, выравнивания, цвета. Может я как-то не так обращаюсь к ней?

На всякий случай, информация об ошибке:

Цитата:
Сигнатура проблемы:
Имя события проблемы: APPCRASH
Имя приложения: Snake_test_4.exe
Версия приложения: 0.0.0.0
Отметка времени приложения: 510a032c
Имя модуля с ошибкой: QtGuid4.dll
Версия модуля с ошибкой: 4.8.0.0
Отметка времени модуля с ошибкой: 4ee04fdc
Код исключения: c0000005
Смещение исключения: 0080f694
Версия ОС: 6.1.7601.2.1.0.256.1
Код языка: 1049
WarAngel-alk вне форума Ответить с цитированием
Старый 31.01.2013, 10:31   #4
Артём Волжанкин
Пользователь
 
Аватар для Артём Волжанкин
 
Регистрация: 07.07.2012
Сообщений: 99
По умолчанию

как я понимаю у тебя там нет ячейки по (2,2)
можно проверить через условие
Код:
if (table->item(2,2))
Если условие выполниться, значит я не прав

Вот пример который я нашел.

Код:
 {
03 Cell *c = cell(row, column);
04 if (!c) {
05 с = new Cell;
06 setItem(row, column, с);
07 }

Если ячейка уже имеет объект Cell, мы его повторно используем. В противном случае мы создаем новый объект Cell и вызываем QTableWidget::setItem() для вставки его в таблицу.
Человек
Артём Волжанкин вне форума Ответить с цитированием
Старый 31.01.2013, 17:58   #5
WarAngel-alk
 
Регистрация: 30.01.2013
Сообщений: 8
По умолчанию

Условие действительно не выполняется, ячейка не существует.

[зачеркнул]А вот по поводу второго кода не понял...в документации[/зачеркнул]
Заменил Cell из Вашего примера на QtableWidgetItem, создал все ячейки таблицы вручную. После этого операции с ячейками работали корректно.

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

Артём Волжанкин, спасибо, плюсик
WarAngel-alk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вылет программы при выводе простого числа (cout) Ciberal Общие вопросы C/C++ 7 27.09.2011 01:51
Копирование данных из ячеек при изменении параметров и переход на следующую строчку. AMRAAM Microsoft Office Excel 6 23.04.2011 21:57
Событие при изменении дерева RIO Общие вопросы Delphi 17 17.05.2010 02:35
innerHTML при изменении st1512 HTML и CSS 0 07.09.2009 10:04
Мнимое сообщение окну/компоненту об изменении параметров дисплея Megabotan Win Api 5 08.01.2007 13:54