Russian Qt Forum
Сентябрь 30, 2024, 20:28 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Отображение данных с QTableWidget в QTextEdit  (Прочитано 6354 раз)
Int main()
Гость
« : Июль 31, 2013, 16:23 »

Всем привет) подркажите как отобразить данные с QTableWidget в QTextEdit. Вобщем есть таблица, например, 5 колонок, и n-ное количество строк. Надо чтобы в текстовом поле отображались данные текущей строки, когда кликнуть по ней, ну или когда она активна
Записан
mutineer
Гость
« Ответ #1 : Июль 31, 2013, 16:27 »

Достать данные и собрать их в строку
QTableWidgetItem * QTableWidget::item ( int row, int column ) const
« Последнее редактирование: Июль 31, 2013, 16:30 от mutineer » Записан
Int main()
Гость
« Ответ #2 : Июль 31, 2013, 22:39 »

Все не совсем так. Вот, к примеру есть уже заполненая таблица и текстовое поле. Я кликаю, например, по 6-й строке таблицы и в текстовом поле отображаються данные только 6-й строки. Кликаю по 21-й строке и отображаются данный только этой строки. Может делать через события? Подскажите как это реализовать
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #3 : Июль 31, 2013, 22:49 »

почитать документацию по QTableWidget в части сигналов, там есть всё что нужно.
Записан
mutineer
Гость
« Ответ #4 : Август 01, 2013, 10:01 »

По клику вытаскивать данные из строки через QTableWidget::item и собирать в QTextEdit
Записан
Int main()
Гость
« Ответ #5 : Август 01, 2013, 13:30 »

По клику вытаскивать данные из строки через QTableWidget::item и собирать в QTextEdit
попробую. А может определить текущую строку (currentRow) и вытащить данные ее с помощью таймера(1сек)? Ну это просто предположения...
Записан
mutineer
Гость
« Ответ #6 : Август 01, 2013, 14:08 »

итого ты получишь - задержку максимум в секунду при клике и лишние дергания когда никто с прогой ничего не делает. Оно тебе надо?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #7 : Август 01, 2013, 14:09 »

плохое предположение
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Int main()
Гость
« Ответ #8 : Август 01, 2013, 17:36 »

ну а если меньше чем одна секунда? Ну тогда напишите маленький пример, чтобы я понял о чем вы
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #9 : Август 01, 2013, 17:48 »

почитай про сигналы и слоты.
Код
C++ (Qt)
class MyClass : ...
{
   Q_OBJECT
...
private slots:
   void showTextFromCell(int row);
...
};
...
connect(tableWidget, SIGNAL(cellClicked(int, int)), SLOT(showTextFromCell(int)));
...
void MyClass::showTextFromCell(int row)
{
   QString columnsText;
   for (int i = 0; i < tableWidget->columnCount(); ++i)
       columnsText += tableWidget->item(row, i)->text();
   textEdit->setText(columnsText);
}
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
mutineer
Гость
« Ответ #10 : Август 01, 2013, 20:28 »

ну а если меньше чем одна секунда? Ну тогда напишите маленький пример, чтобы я понял о чем вы

Чем тебе не нравится сделать реакцию на клик?
Записан
Int main()
Гость
« Ответ #11 : Август 01, 2013, 23:01 »

да просто что-то идея такая видимо дурацкая в голове была ))
Записан
Int main()
Гость
« Ответ #12 : Август 01, 2013, 23:19 »

почитай про сигналы и слоты.
Код
C++ (Qt)
class MyClass : ...
{
   Q_OBJECT
...
private slots:
   void showTextFromCell(int row);
...
};
...
connect(tableWidget, SIGNAL(cellClicked(int, int)), SLOT(showTextFromCell(int)));
...
void MyClass::showTextFromCell(int row)
{
   QString columnsText;
   for (int i = 0; i < tableWidget->columnCount(); ++i)
       columnsText += tableWidget->item(row, i)->text();
   textEdit->setText(columnsText);
}
все сделал как написали, компилится нормально, но почему то программа сразу вылетает. Connect прописал в конструкторе? В чем проблема?
« Последнее редактирование: Август 01, 2013, 23:21 от Int main() » Записан
Int main()
Гость
« Ответ #13 : Август 01, 2013, 23:25 »

все, разобрался сам. Чуток подправил цикл for() и все заработало. Спасибо все за помощь
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.141 секунд. Запросов: 23.