Russian Qt Forum
Сентябрь 30, 2024, 16:26 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: tableWidgetItem->flags()???  (Прочитано 4570 раз)
zoro86
Гость
« : Октябрь 07, 2010, 08:02 »

Я использую QTableWidget в приложении для отображения списка платежей... данные в нем не должны редактироваться но при этом строка из 4 полей должна выделятся...

начальные установки для QTableWidget.
Код:
void MainWindow::setSettingForOperationList()
{

    QStringList stritemTable;

    stritemTable << linguisMap[QString("Operator_%1").arg(lang)]
                 << linguisMap[QString("Account_%1").arg(lang)]
                 << linguisMap[QString("Amount_%1").arg(lang)]
                 << linguisMap[QString("Status_%1").arg(lang)];

    int cols = 4;

    lstOperationView->setColumnCount(cols);
    lstOperationView->setHorizontalHeaderLabels(stritemTable);
    lstOperationView->horizontalHeader()->setStretchLastSection(true);
    lstOperationView->setSelectionBehavior(QAbstractItemView::SelectRows);

    this->setWidthForOperationList();
}


вот вставляю новую строку и допустим добавляю в него один tableWidgetItem...
Код:
    lstOperationView->insertRow(0);
    int i = lstOperationView->rowCount();
    QTableWidgetItem *tableWidgetItem = new QTableWidgetItem(QString("%1").arg(i));
    lstOperationView->setRowHeight(0,20);
    tableWidgetItem->setFlags(Qt::ItemIsEditable);
    lstOperationView->setItem(0,0,tableWidgetItem);

при этом при щелчке на 0-й элемент QTableWidget то есть те которые находятся в первом столбце он не выделяется и не редактируется, какой то серинкий.... при щелчке на элементы в следующих столбцах строка выделяется крое 0-го элемента...

потом попробовал..
Код:
tableWidgetItem->setFlags(tableWidgetItem->flags() | Qt::ItemIsEditable);

он стал редактируемым.... и строка полностью подсвечивается(что и следовало)

Так вот мне необходимо сделать следующее...

  • - выделять строку при выборе хотя бы одного элемента при этом чтобы они не редактировались
  • - при щелчке правой кнопкой мыши должно вызываться менюшка с действиями(типа переправить, копировать, распечатать чек)
  • - сделать скрытый tableWidgetItem которая будет содержать транзакцию платежа, чтобы по нему можно было личится в базу...

по форуму я много чего нашел интересного но вот касающиеся этого конкретно не нашел..... если кто знает помогите.. Непонимающий
Записан
zoro86
Гость
« Ответ #1 : Октябрь 07, 2010, 08:17 »

нашел как делать не редактируемыми

lstOperationView->setEditTriggers(QAbstractItemView::NoEditTriggers);
Записан
Aleksey_Zh
Гость
« Ответ #2 : Октябрь 07, 2010, 08:21 »

Привет. Может быть стоит глянуть в сторону делегатов?

ЗЫ Qt::ItemIsEditable - лучше убрать Улыбающийся нередактируемости этот флажок не поможет
ЗЗЫ Если таблица создается в конструкторе - можно ведь в selectionBehavior поставить вид выделения - строкой...
а насчет скрытого tableWidget'a - нужно создать пустой столбец с нулевой длиной и запретить его изменение (изменение размера и позиции)
« Последнее редактирование: Октябрь 07, 2010, 08:29 от Aleksey_Zh » Записан
zoro86
Гость
« Ответ #3 : Октябрь 07, 2010, 08:34 »

но вот это у меня уже есть....
Код:
lstOperationView->setSelectionBehavior(QAbstractItemView::SelectRows);

по поводу делегатов... у меня с этим проблемы... есть ли примерчик какой нить я так думаю там можно и выделение строи при наведение мыши сделать...

и меню бы кто нить помог реализовать В замешательстве
Записан
Aleksey_Zh
Гость
« Ответ #4 : Октябрь 07, 2010, 08:53 »

С менюшками еще не разбирался, а насчет делегатов - в примерах \qt\demos\books
Записан
zoro86
Гость
« Ответ #5 : Октябрь 07, 2010, 08:54 »

Пока добился следующего...

Код:
void MainWindow::setSettingForOperationList()
{

    QStringList stritemTable;

    stritemTable << linguisMap[QString("Operator_%1").arg(lang)]
                 << linguisMap[QString("Account_%1").arg(lang)]
                 << linguisMap[QString("Amount_%1").arg(lang)]
                 << linguisMap[QString("Status_%1").arg(lang)]
                 << "Transaction"
                 << "status";

    int cols = 6;

    lstOperationView->setColumnCount(cols);
    lstOperationView->setHorizontalHeaderLabels(stritemTable);
    lstOperationView->horizontalHeader()->setStretchLastSection(true);
    //Прячем колонку Transaction
    lstOperationView->setColumnHidden(4,true);
    //Прячем колонку status
    lstOperationView->setColumnHidden(5,true);
    lstOperationView->setSelectionBehavior(QAbstractItemView::SelectRows);
    lstOperationView->setEditTriggers(QAbstractItemView::NoEditTriggers);

    this->setWidthForOperationList();
}

осталось сделать делегат... для строки... ща рассмотрю примерчик... и менюшку прикрутить...
Записан
zoro86
Гость
« Ответ #6 : Октябрь 08, 2010, 05:56 »

Так со всем разобрался осталось сделать выделение строк при наведении мыши на элементы скажем светло берюзовым цветом... у кого какие идеи по поводу этого??
Записан
zoro86
Гость
« Ответ #7 : Октябрь 08, 2010, 06:27 »

Делаю вот такой стиль... для выделения ячейки..

Код:
QTableWidget::item:hover { 

        background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,

                stop: 0 #fffaff, stop: 0.4 #fff0c0,

                stop: 0.5 #fff0c0, stop: 1.0 #d0d9f0);

        border: 1px solid #a4a063;

}

а как сделать чтобы вся стока при наведении выделялась??
Записан
spirits25
Гость
« Ответ #8 : Апрель 11, 2012, 14:47 »


а как сделать чтобы вся стока при наведении выделялась??

Ответ нашёлся? "как сделать чтобы вся стока при наведении выделялась?"
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.108 секунд. Запросов: 18.