Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: QTableWidget с галочками
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt GUI
NordWest
Сабж... кажется так пишут, когда суть в названии содержится.
Вобщем нужна таблица со списком (к примеру открытых файлов), в котором первая колонка представляет из себя место для отметки и чтобы можно было выделять несколько файлов для дальнейших с ними операций. Подскажите какие классы и какие свойства надо выставлять.
molchanoviv
Посмотри классы QTableView и QAbstractTableModel (ну или их потомков) А вообще в книге Ю В Земскова подробно описано как это делается(даже в сокращенном варианте)
Litkevich Yuriy
да, через модель/представление это лучше делать, но можно и через установку виджета
NordWest
А можно тоже самое сделать через QListView?
Litkevich Yuriy
Цитата(NordWest @ 3.2.2009, 13:05) *
А можно тоже самое сделать через QListView?
нет, у спискового представления нет столбцов.
NordWest
Ладно, пусть без столбцов, мне хотя бы галочка и строка с путём к файлу нужна.
NordWest
И ещё. Как сделать выделение только строк целиком и запретить изменение ячеек? Я не нашел где стили выставляются.
Litkevich Yuriy
NordWest, яж тебе в 3-ем сообщении ссылку дал, там есть установка виджета в таблицу.
NordWest
Цитата(Litkevich Yuriy @ 3.2.2009, 12:28) *
NordWest, яж тебе в 3-ем сообщении ссылку дал, там есть установка виджета в таблицу.


Да, я так и сделал. Через таблицу. Но её настраивать надо, а как - не понятно.

QTableView - это потомок QTableWidget? Т.е. можно попробовать его использовать взамен? Он позволит мне установть требуемые свойства? Поглядев список функций, сомневаюсь.

И вот не пойму отчего событие не срабатывает.
Сделал пока так:
frameList = new QTableWidget(0, 2, this);
QStringList frameListHeader;
frameListHeader << "*" << tr("Names");
frameList->setColumnCount(2);
frameList->setHorizontalHeaderLabels(frameListHeader);

connect(frameList, SIGNAL(cellClicked(int, int)), this, SLOT(slotFrameListClicked(int , int )));


Сделал slotFrameListClicked:
void MainWindow::slotFrameListClicked(int r, int c)
{
    QMessageBox::information(0,"stimpro",QString("%1 %2").arg(r).arg(c),QMessageBox::Ok,0,0);
}


Не проходит сигнал...
Litkevich Yuriy
Цитата(NordWest @ 3.2.2009, 16:05) *
QTableView - это потомок QTableWidget?
см. асистент (QTableView Class Reference)
NordWest
Жаль нельзя редактировать свои посты...

Цитата
Не проходит сигнал...


Нормально всё, не там объявил слот просто.

Цитата
см. асистент (QTableView Class Reference)


Глянул. Снова вопрос. Так класс QTableView нужно использовать вместо QTableWidget, или надо объявлять примерно так:
frameList = new QTableWidget(0, 2, this);
QTableView *frameView = new QTableView(frameList);


Если вместо, то не подходят методы.
Litkevich Yuriy
QTableView - табличное представление (данных) для работы в паре с моделью (данных). Это из концепции Модель/Представление
QTableWidget - виджет, как во многих других библиотеках, например в Борланде подобное называется TStringGrid. Этот виджет предназначен для очень малого кол-ва данных и представляет собой объединенные вместе QTableView и QStandardItemModel (см. Вспомогательные классы)
kuler
галочка:

item = new QTableWidgetItem();
item->setCheckState(Qt::Unchecked);
tablewidget->setItem(i, 3, item);

но вообще qtablewidget откровенно слабая штука
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.