Mam widok do którego dodałem ItemDelegate
class Delegate : public QStyledItemDelegate
{
...
}
Delegate *delegate = new Delegate;
QStandardItemModel *model = new QStandardItemModel (ROW_COUNT, 3);
ui->listView->setItemDelegate(delegate);
Podczas rysowanie potrzebuje narysować QImage, tylko że musze czekać na obraz bo jest generowany na urządzeniu embedded i musze poczekać na wynik
od 200ms do 3 minut
Jak rysować obrazy z opóźnieniem wtedy gdy już będą gotowe ? tak aby głowny watek nie dostawał czkawki ?
Przykładowy kod
https://github.com/mariuszmaximus/mvc_delayed_image
źródłem obrazu jest funkcja która generuje przykładowe obraz z opóźnieniem 200ms
QImage getImage(int id)
{
auto saveImage=[](int id){
int w{128};
int h{64};
float raw_fg_col = 999;
float raw_bg_col = 0;
std::string str=std::to_string(id);
typedef cimg_library::CImg <uint8_t> im_float_type;
im_float_type img;
img.resize(w,h);
img.rand(0,128);
img.draw_text(0,0,str.c_str(),&raw_fg_col,&raw_bg_col, 1, 32);
auto s = std::to_string(id)+".bmp";
img.save_bmp( s.c_str() );
};
saveImage(id);
QString fname = QString::number(id)+".bmp";
QImage image(fname);
std::this_thread::sleep_for(std::chrono::milliseconds(200));
return image;
}
narysowanie takiego widoku trwa parę sekund (16*0,2s)