Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Int main() от Июль 31, 2013, 16:23



Название: Отображение данных с QTableWidget в QTextEdit
Отправлено: Int main() от Июль 31, 2013, 16:23
Всем привет) подркажите как отобразить данные с QTableWidget в QTextEdit. Вобщем есть таблица, например, 5 колонок, и n-ное количество строк. Надо чтобы в текстовом поле отображались данные текущей строки, когда кликнуть по ней, ну или когда она активна


Название: Re: Отображение данных с QTableWidget в QTextEdit
Отправлено: mutineer от Июль 31, 2013, 16:27
Достать данные и собрать их в строку
QTableWidgetItem * QTableWidget::item ( int row, int column ) const


Название: Re: Отображение данных с QTableWidget в QTextEdit
Отправлено: Int main() от Июль 31, 2013, 22:39
Все не совсем так. Вот, к примеру есть уже заполненая таблица и текстовое поле. Я кликаю, например, по 6-й строке таблицы и в текстовом поле отображаються данные только 6-й строки. Кликаю по 21-й строке и отображаются данный только этой строки. Может делать через события? Подскажите как это реализовать


Название: Re: Отображение данных с QTableWidget в QTextEdit
Отправлено: Alex Custov от Июль 31, 2013, 22:49
почитать документацию по QTableWidget в части сигналов, там есть всё что нужно.


Название: Re: Отображение данных с QTableWidget в QTextEdit
Отправлено: mutineer от Август 01, 2013, 10:01
По клику вытаскивать данные из строки через QTableWidget::item и собирать в QTextEdit


Название: Re: Отображение данных с QTableWidget в QTextEdit
Отправлено: Int main() от Август 01, 2013, 13:30
По клику вытаскивать данные из строки через QTableWidget::item и собирать в QTextEdit
попробую. А может определить текущую строку (currentRow) и вытащить данные ее с помощью таймера(1сек)? Ну это просто предположения...


Название: Re: Отображение данных с QTableWidget в QTextEdit
Отправлено: mutineer от Август 01, 2013, 14:08
итого ты получишь - задержку максимум в секунду при клике и лишние дергания когда никто с прогой ничего не делает. Оно тебе надо?


Название: Re: Отображение данных с QTableWidget в QTextEdit
Отправлено: kambala от Август 01, 2013, 14:09
плохое предположение


Название: Re: Отображение данных с QTableWidget в QTextEdit
Отправлено: Int main() от Август 01, 2013, 17:36
ну а если меньше чем одна секунда? Ну тогда напишите маленький пример, чтобы я понял о чем вы


Название: Re: Отображение данных с QTableWidget в QTextEdit
Отправлено: kambala от Август 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);
}


Название: Re: Отображение данных с QTableWidget в QTextEdit
Отправлено: mutineer от Август 01, 2013, 20:28
ну а если меньше чем одна секунда? Ну тогда напишите маленький пример, чтобы я понял о чем вы

Чем тебе не нравится сделать реакцию на клик?


Название: Re: Отображение данных с QTableWidget в QTextEdit
Отправлено: Int main() от Август 01, 2013, 23:01
да просто что-то идея такая видимо дурацкая в голове была ))


Название: Re: Отображение данных с QTableWidget в QTextEdit
Отправлено: Int main() от Август 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 прописал в конструкторе? В чем проблема?


Название: Re: Отображение данных с QTableWidget в QTextEdit
Отправлено: Int main() от Август 01, 2013, 23:25
все, разобрался сам. Чуток подправил цикл for() и все заработало. Спасибо все за помощь