Как добавить пользовательскую кнопку переключения в делегат пользовательского элемента? - PullRequest
0 голосов
/ 06 января 2020

У меня есть пользовательский элемент делегата, который я хотел бы нарисовать / прикрепить пользовательскую кнопку переключения (см. Изображение), в идеале замените кнопки на делегате пользовательской кнопкой переключения. Оба класса (пользовательский элемент делегата и пользовательская кнопка переключения) прекрасно работают самостоятельно, однако, как прикрепить кнопку переключения к делегату, довольно сложно. Любые предложения были бы очень полезны.

Это раздел кода, который dr aws кнопка:

void CustomDelegate::drawButton(QStyleOptionButton& opt, const QPoint& p, QPainter* painter) const
{
    QStyle* style = QApplication::style();
    opt.text = "button";
    if(style){
        style->drawControl(QStyle::CE_PushButton, &opt, painter);
    opt.state &= ~QStyle::State_Sunken;
    opt.rect.translate(opt.rect.width() + offset_button, 0);
    }
}

enter image description here

1 Ответ

0 голосов
/ 10 января 2020

Вы можете достичь этого, используя специальный редактор для ячейки и открывая постоянный редактор для нее.

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

С помощью этого метода вам не нужно рисовать кнопку самостоятельно в делегате, потому что отображается не просто изображение, а полностью работающая кнопка.

https://doc.qt.io/qt-5/qtwidgets-itemviews-stardelegate-example.html - это пример, который должен начать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...