1. Как удалить все столбцы в заголовке таблицы?
В MFC можно написать:
n = m_IDC_LIST1.GetHeaderCtrl()->GetItemCount();
if (n>0)
{
for (i=(n-1); i>=0; i--) m_IDC_LIST1.DeleteColumn();
}
А как написать в Qt? Можно ли написать:
n = ui->tableWidget->horizontalHeader()->count();
if (n>0)
{
QStringList lst;
lst.clear();
ui->tableWidget->setHorizontalHeaderLabels(lst);
}
Или же надо писать как-то по-другому?
2. Как сделать какую-то клетку в таблице редактируемой или нередактируемой?
Как сделать то же самое для целой строки? Для целого столбца? Для всей таблицы?
3. Как узнать номер выделенной строки в таблице?
4. Как работать с таблицей в режиме множественного выделения строк (multiselecting)?
Как узнать число выделенных строк и номера выделенных строк?
Здравствуйте, RussianFellow, Вы писали:
RF>Вопросы по работе с таблицами (тип QTableWidget):
RF>1. Как удалить все столбцы в заголовке таблицы?
Столбцы заголовка связаны со столбцами таблицы. Их можно удалить тлько вместе.
Вы хотите:
— Удалить/скрыть заголовок таблицы?
— Удалить текст заголовков?
— Удалить все содержимое таблицы (все столбцы)?
RF>2. Как сделать какую-то клетку в таблице редактируемой или нередактируемой? RF>Как сделать то же самое для целой строки? Для целого столбца? Для всей таблицы?
ui->tableWidget->setSelectionBehavior( QAbstractItemView::SelectRows ) ; //выделять только строки целиком
ui->tableWidget->setSelectionMode( QAbstractItemView::SingleSelection ) ; //выделять строки только по одной
Возможно, правильнее работать с текущей строкой https://doc.qt.io/qt-6/qtablewidget.html#currentRow , а выделение совсем запретить, если уж хотите работать с одной строкой.
RF>4. Как работать с таблицей в режиме множественного выделения строк (multiselecting)? RF>Как узнать число выделенных строк и номера выделенных строк?
for( auto i : ui->tableWidget->selectedIndexes() )
{
int row = i.row(); // номер строки (в случае дерева - отсчитан от родительского узла,а не абсолютный).
...
}
Re: Вопросы по работе с таблицами (тип QTableWidget)
Здравствуйте, RussianFellow, Вы писали:
RF>Вопросы по работе с таблицами (тип QTableWidget):
RF>1. Как удалить все столбцы в заголовке таблицы? RF>В MFC можно написать:
RF>
RF>Или же надо писать как-то по-другому?
RF>2. Как сделать какую-то клетку в таблице редактируемой или нередактируемой? RF>Как сделать то же самое для целой строки? Для целого столбца? Для всей таблицы?
RF>3. Как узнать номер выделенной строки в таблице?
RF>4. Как работать с таблицей в режиме множественного выделения строк (multiselecting)? RF>Как узнать число выделенных строк и номера выделенных строк?
Здравствуйте, RussianFellow, Вы писали:
RF>И ещё вопрос: как задать ширину столбцов у таблицы?
Прочитать документацию.
Но я бы сделал так, при первом старте resizeColumnsToContents, при закрытии приложение saveGeometry, при открытии restoreGeometry. Так пользователю будет удобнее, выставил ширину как надо и радуешься.
Re[3]: Вопросы по работе с таблицами (тип QTableWidget)
Здравствуйте, Igore, Вы писали:
I>... I>Но я бы сделал так, при первом старте resizeColumnsToContents, при закрытии приложение saveGeometry, при открытии restoreGeometry. Так пользователю будет удобнее, выставил ширину как надо и радуешься.
Не по теме, но вспомнилось. Лет 12 назад (ещё Qt4 был сыроват) словили очень неприятный баг у saveGeometry в QMainWindow. Он очень плохо отрабатывал случаи, когда у пользователя менялось разрешение экрана и системные размеры шрифтов. Пришлось городить велосипед, который запоминал текущие настройки и в случае их изменения применял стандартное расположение контролов.
Re[4]: Вопросы по работе с таблицами (тип QTableWidget)
Здравствуйте, SaZ, Вы писали:
SaZ>Не по теме, но вспомнилось. Лет 12 назад (ещё Qt4 был сыроват) словили очень неприятный баг у saveGeometry в QMainWindow. Он очень плохо отрабатывал случаи, когда у пользователя менялось разрешение экрана и системные размеры шрифтов. Пришлось городить велосипед, который запоминал текущие настройки и в случае их изменения применял стандартное расположение контролов.
Ну если такое вспоминать. Было что при переходе с одной версии на другую интерфейс перекашивало очень сильно(как раз от restoreGeometry на старых данных), пришлось на новой версии просто удалять старые данные при старте и показывать всё по дефолту. Сохранение позиций элементов хорошая практика, пусть иногда и могут быть нюансы.