struct Thumbnails
{
std::string imagePath;
std::string name
bool checked
}
std::vector<Thumbnails> lista
I chciałem wyswietlić vector w Qt ,
znalazłem QListWidget i wszystko było by pieknie
tylko że strzałki na klawiaturze nie zaznaczają ktory obiekt ma aktualnie fokus w QListWidget jezeli elementem jest moj widget
zrobilem wiec prosty przykład
elementy "Item A" można zaznaczyć klawiatura
elementy "Item B" nie mozna zaznaczyc klawiatura bo tu jest moj Widget (w przykładzie QLabel)
eksperymentowałem ze stylami z pseudo-states
https://doc.qt.io/qt-5/stylesheet-reference.html#list-of-pseudo-states
ale zaznaczanie aktywnego elementu nie działa
Finalne pytanie: jak zrobic aby elementy "Item B" miały narysowane zaznaczenie elementu aktywnego (tzw. fokus)
Czy może: oczekuje od gąski orlich piór i głosu słowika ? I nie tedy droga do osiągnięcia celu
#include <QApplication>
#include <QListWidget>
#include <QListWidgetItem>
#include <QPainter>
#include <QStyleOption>
#include <QPixmap>
#include <QLabel>
std::string styleSTR = R"style(
QLabel
{
background-color:blue;
border-radius: 35px;
font: bold 22px;
border-width: 2px;
border-style: solid;
border-color: rgb(177, 77, 77);
}
QLabel:hover , QLabel:selected
{
background-color:yellow;
}
)style";
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QListWidget listWidget;
// te elementy maja narysowany focus elementu
for(int i = 0 ; i < 3; ++i)
{
QListWidgetItem *itemLV = new QListWidgetItem(&listWidget);
itemLV->setText("Item A");
itemLV->setSizeHint(QSize(150, 120));
}
// te elementy NIE MAJĄ narysowanego focus-a elementu
for(int i = 0 ; i < 3; ++i)
{
// Add an item to list widget.
QListWidgetItem *item = new QListWidgetItem();
item->setSizeHint(QSize(150, 150));
listWidget.addItem(item);
auto *addItemWidget = new QLabel;// Thumbnails(&listWidget);
addItemWidget->setText("Item B");
addItemWidget->setStyleSheet(QString::fromStdString(styleSTR));
addItemWidget->resize(100,100);
listWidget.setItemWidget(item, addItemWidget);
}
listWidget.setIconSize(QSize(128*2,128));
listWidget.setResizeMode(QListView::Adjust);//(QListView::Fixed);
listWidget.setViewMode(QListView::IconMode);
listWidget.resize(800,600);
listWidget.show();
return a.exec();
}