Название: Работа с QTableWidget Отправлено: CJ1 от Май 27, 2012, 14:16 Есть QTableWidgetItem *newItem = new QTableWidgetItem( );
Нужно сделать чтоб эта ячейка не редактировалась, как? Название: Re: Работа с QTableWidget Отправлено: bk-201 от Май 27, 2012, 15:57 void QTableWidgetItem::setFlags ( Qt::ItemFlags flags )
Посмотри в документации список флагов Название: Re: Работа с QTableWidget Отправлено: CJ1 от Май 28, 2012, 10:46 Все сделал! Теперь непойму как создать всплывающее меню в QTableWidget????????
Название: Re: Работа с QTableWidget Отправлено: CJ1 от Май 28, 2012, 11:21 Вот написал я так,
Код: QMenu menu(this); А как установить события теперь на щечек по одному из пункту? Название: Re: Работа с QTableWidget Отправлено: kambala от Май 28, 2012, 11:35 connect(addAct, SIGNAL(triggered()), ...
может начнёшь документацию почаще открывать? Название: Re: Работа с QTableWidget Отправлено: CJ1 от Май 28, 2012, 14:44 Извиняюсь за глупый вопрос, сразу сделал это!
А вот теперь настоящая проблема!!!! Вот я создал в QT Creator главное окно, в нем QTableWidget Далее я стандартно поставил в нем 3 на 3 клетки и они пустые Далее я делаю такой примерно код Код: ui->tableWidget->item(j,i)->text() И все программа рушится. Но если я бы в рантайме щелкнул бы на эту клетку а потом выполнил этот код, то все было бы ок! Неработает даже такой код Код: ui->tableWidget->item(j,i)->text().isEmpty() И даже если я создам в рантайме Код: ui->tableWidget->insertRow(6) И потом обращусь к любой из созданных клеток тем же способом программа рухнет! В чем тут дело то? Название: Re: Работа с QTableWidget Отправлено: soiam от Май 28, 2012, 15:06 Цитировать ui->tableWidget->insertRow(6) А после вставки строки ты заполняешь ее QwidgetItem'ами?И потом обращусь к любой из созданных клеток тем же способом программа рухнет! В чем тут дело то? Код: void setItem(int row, int column, QTableWidgetItem *item); Глянь, что тебе возвращает Код: ui->tableWidget->item(j,i) Название: Re: Работа с QTableWidget Отправлено: CJ1 от Май 28, 2012, 15:22 После вставки я ничем ни заполняю, а как нужно заполнить?
Цитировать Не NULL ли случайно? NULLСкажите как нужно правильно делать? Обрабатывать cellChanged? А как его обрабатывать? Название: Re: Работа с QTableWidget Отправлено: soiam от Май 28, 2012, 15:29 ui->tableWidget -> setItem(номер_строки,номер_столбца,new QTableWidgetItem("текст"));
и так всю матрицу. Название: Re: Работа с QTableWidget Отправлено: CJ1 от Май 28, 2012, 15:31 делал так! Всеравно ошибка
Название: Re: Работа с QTableWidget Отправлено: soiam от Май 28, 2012, 15:36 делал так! Всеравно ошибка индексы i и j проверь при попытке запросить данные.Вообще было бы хорошо выложить твои функции проекта для работы с таблицей. А так сложно что-то сказать Название: Re: Работа с QTableWidget Отправлено: CJ1 от Май 28, 2012, 15:41 Код: QString exportname = QFileDialog::getSaveFileName(this, "dialogcaption", "C:\\", "*.pdf"); Название: Re: Работа с QTableWidget Отправлено: CJ1 от Май 28, 2012, 15:44 Видимо нужен какойто код! Вот например если я на каждую ячейку по два раза мышкой щелкну то после этого такой ошибки нет
Название: Re: Работа с QTableWidget Отправлено: CJ1 от Май 28, 2012, 15:47 Так а индексы показывает нормально! Тоесть
ui->tableWidget->columnCount() ui->tableWidget->rowCount() Все возвращает правильно! А на одном форуме тоже была такая ошибка, но решили ее обработав cellChanged Но как не сказанно Название: Re: Работа с QTableWidget Отправлено: kambala от Май 28, 2012, 16:02 память под айтемы надо выделить прежде, чем что-то туда устанавливать. предложение по чтению документации остаётся в силе.
Название: Re: Работа с QTableWidget Отправлено: CJ1 от Май 28, 2012, 16:08 Но это понятно!
Код: for (int i = intRowStart; i < intRowStart + intRows; i++) Вот тут выделяю!! Название: Re: Работа с QTableWidget Отправлено: kambala от Май 28, 2012, 16:15 и где гарантия, что для элемента (1,1) память выделена? мы же не знаем значения intRowStart, intColStart. и там в предыдущем коде так и задумано, что циклы начинаются с 1, а не с 0?
Название: Re: Работа с QTableWidget Отправлено: CJ1 от Май 28, 2012, 16:26 Да точно!
Сделал вот так и все запохало! Оказывается Excel не с нуля начинает отчет а с произвольного места! Код: for(int i = 0; i <= intRowStart + intRows; i++){ Теперь тоже самое надо сделать когда делаю так Код: ui->tableWidget->insertColumn(it[0]->column()+1); Я просто два дня назад это изучать начал, так что могу еще немного глупых вопросов по задавать :) Название: Re: Работа с QTableWidget Отправлено: iroln от Май 28, 2012, 19:52 Цитировать Я просто два дня назад это изучать начал, так что могу еще немного глупых вопросов по задавать Ну почему не проще книжку полистать ??? Честное слово, не понимаю. ::) Название: Re: Работа с QTableWidget Отправлено: CJ1 от Май 29, 2012, 20:27 Цитировать Ну почему не проще книжку полистать Честное слово, не понимаю. 1. Срочность 2. В книге я не нашел очного описания QTableWidget 3. Как видно из диалога, я просто упустил мелочь. Сейчас мне надо соединится с MySQL и в ответ получаю что драйвер не установлен Мне нуно скачать какието утилиты и откомпилить с помощью них. Я не знаю где че качать, и мне нуно срочно. Я нашел на какомто форуме 4 готовых файла , 2 lib и 2 dll. А как и куда их подключать незнаю? |