jenya7 0 22 декабря, 2019 Опубликовано 22 декабря, 2019 · Жалоба Надеюсь есть опытные товарищи по работе с виджетами. Есть две проблемы на которых я застрял 1. нет компонента как SplitContainer в Visual Studio. 2. нет свойства Dock у визуальных компонентов, так чтоб дочерний компонент сжимался/растягивался с родительским компонентом. Как это решается в Qt? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SSerge 4 22 декабря, 2019 Опубликовано 22 декабря, 2019 · Жалоба Есть похожий, называется QSplitter Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 23 декабря, 2019 Опубликовано 23 декабря, 2019 (изменено) · Жалоба 13 hours ago, SSerge said: Есть похожий, называется QSplitter а где он там? я его не нашел на вкладке визуальных компонентов. добавил его програмно MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); QSplitter *splitter = new QSplitter(this); splitter->addWidget(ui->textEditTerminalRx); } текстовое окно уехало куда то никакого сплита не появилось. и потом сплит делит тот же компонет на две части. а мне надо два отдельных компонета. Изменено 23 декабря, 2019 пользователем jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 14 23 декабря, 2019 Опубликовано 23 декабря, 2019 · Жалоба Он там в layouts. Выделяете два виджета, нажимаете "Lay out vertically in splitter" (или horizontally) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 23 декабря, 2019 Опубликовано 23 декабря, 2019 · Жалоба 12 minutes ago, AHTOXA said: Он там в layouts. Выделяете два виджета, нажимаете "Lay out vertically in splitter" (или horizontally) большое спасибо. да реально классно работает. а как я делаю докинг - привязку дочернего компонета к родительскому? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 14 23 декабря, 2019 Опубликовано 23 декабря, 2019 · Жалоба Точно так же. Расположите дочерние компоненты в родительском, а потом ткните в подходящий layout. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 23 декабря, 2019 Опубликовано 23 декабря, 2019 (изменено) · Жалоба 8 hours ago, AHTOXA said: Точно так же. Расположите дочерние компоненты в родительском, а потом ткните в подходящий layout. не нашел. те опции которые там есть не делают докинг. вроде разобрался. нужно выделить компонент и потом Layout Vertically, Layout Horizontally. Изменено 23 декабря, 2019 пользователем jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 24 декабря, 2019 Опубликовано 24 декабря, 2019 · Жалоба а как мне изменить стиль колонки в tableWidget? вместо текст бокс сделать чек бокс. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 14 24 декабря, 2019 Опубликовано 24 декабря, 2019 · Жалоба auto box = new QCheckBox(this); box->setChecked(true); connect(box, &QCheckBox::stateChanged, [&](int newState){ if (newState == Qt::Checked) { } }); tableWidget->setCellWidget(row, col, box); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 25 декабря, 2019 Опубликовано 25 декабря, 2019 · Жалоба 14 hours ago, AHTOXA said: auto box = new QCheckBox(this); box->setChecked(true); connect(box, &QCheckBox::stateChanged, [&](int newState){ if (newState == Qt::Checked) { } }); tableWidget->setCellWidget(row, col, box); а что у нас row? мне нужно для всех рядов. вначале tableWidget пустой. потом я начинаю его заполнять. для каждого ряда надо вызывать tableWidget->setCellWidget(row, col, box); ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 14 25 декабря, 2019 Опубликовано 25 декабря, 2019 · Жалоба Сначала надо задать размер таблицы - setRowCount, setColumnCount(). А потом в каждую ячейку таблицы можно вставить любой виджет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 25 декабря, 2019 Опубликовано 25 декабря, 2019 (изменено) · Жалоба 10 minutes ago, AHTOXA said: Сначала надо задать размер таблицы - setRowCount, setColumnCount(). А потом в каждую ячейку таблицы можно вставить любой виджет. у меня размер динамический. я читаю строки из xml файла и потом заполняю таблицу. получается каждый раз нужно задавать размер таблицы? и в цикле пройтись по рядам tableWidget->setCellWidget(i, col, box); ? Изменено 25 декабря, 2019 пользователем jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 14 25 декабря, 2019 Опубликовано 25 декабря, 2019 · Жалоба Если размер данных можно узнать сразу, то лучше сразу и задать размер таблицы. Если данные прибавляются динамически, то можно добавлять строки по одной: table->setRowCount(table-rowCount() + 1); Но на больших объёмах это будет тормозить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 25 декабря, 2019 Опубликовано 25 декабря, 2019 (изменено) · Жалоба 54 minutes ago, AHTOXA said: Если размер данных можно узнать сразу, то лучше сразу и задать размер таблицы. Если данные прибавляются динамически, то можно добавлять строки по одной: table->setRowCount(table-rowCount() + 1); Но на больших объёмах это будет тормозить. спасибо. а после того как заполнил таблицу - как мне проверить чекбокс установлен или сброшен в каком либо ряде? и как его установить? Изменено 25 декабря, 2019 пользователем jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gridinp 2 25 декабря, 2019 Опубликовано 25 декабря, 2019 · Жалоба 8 hours ago, AHTOXA said: Если размер данных можно узнать сразу, то лучше сразу и задать размер таблицы. Если данные прибавляются динамически, то можно добавлять строки по одной: table->setRowCount(table-rowCount() + 1); Но на больших объёмах это будет тормозить. на больших объёмах надо делать QTableView+модель, миллионы строк не тормозят Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться