Мне нужно в окне рисовать таблицу в qt Я делаю так: Создаю таблицу:
QTableView* tableView = new QTableView();
QStandardItemModel* model = new QStandardItemModel(3,3, tableView);
tableView->setModel(model);
for(int row=0; row!=model->rowCount(); ++row)
{
for(int column=0; column!=model->columnCount(); ++column)
{
QStandardItem* newItem = new QStandardItem(tr("%1").arg((row+1)*(column+1)));
model-> setItem(row, column, newItem);
}
}
Создаю едит и пердаю туда наблицу:
QTextEdit* textEdit = new QTextEdit;
textEdit->setPlainText(tableView);
textEdit->setFixedSize(790, 620);
textEdit->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
Но ничего не рисуется. Подскажите как правильно нарисовать таблицу с 3 на 3
Так не работает.
Для установки текста у QTextEdit
есть методы setPlainText, setHtml и объединящию оба метода setText. Эти методы принимают строку.
Если вы хотите добавить таблицу в QTextEdit
, вы можете ее составить в виде HTML таблицы и передать ее в метод setHtml.
Например:
textEdit->setHtml("<table><tr><td>1</td><td>2</td></tr><tr><td>3</td><td>4</td></tr></table>");
Т.е. вам нужно будет пройтись по ячейкам QTableView (или QStandardItemModel), и составить строку HTML, в которой будет таблица, после эту строку вставить в textEdit через setHtml.
Алгоритм:
QString html = "<table border='1' style='border-style:solid' cellspacing='-1' cellpadding='5'>";
for (int row = 0; row < model->rowCount(); ++row) {
html += "<tr>";
for (int column = 0; column < model->columnCount(); ++column) {
QStandardItem* item = model->item(row, column);
html += "<td>" + item->text() + "</td>";
}
html += "</tr>";
}
html += "</table>";
textEdit->setHtml(html);
Вот так будет выглядеть:
PS. есть и другой способ добавления -- через текстовый курс и QTextTableFormat / QTextTable.
Пример:
QTextTableFormat textTableFormat;
// Сделаем столбцы одинаковой ширины и их размер будет зависеть от размера
// текстового поля
QVector < QTextLength > lenghts;
for ( int column = 0; column < cols; column++ )
lenghts << QTextLength( QTextLength::PercentageLength, 100.0 / cols );
textTableFormat.setColumnWidthConstraints( lenghts );
editor->textCursor().insertTable( rows, cols, textTableFormat );
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть String lastyear в которой лежит значение 2015; Нужно к ней добавить 10 лет, чтобы получить в итоге:
Я пишу приложение, мне на сервере нужно компилировать и запускать код который пришлёт пользовательКак мне запускать сторонний код так что...
Есть ядро сервера, у него есть datagram сокет по которому приходит подобная информация: HEX, ASCII, UTF-8