LINUX.ORG.RU

[QT] QTableWidget с картинками


0

0

Есть форма с QTableWidget, пытаюсь по клику на ячейку добавить в эту ячейку картинку. Для чего есть такой вот слот:

void MainWindow::cellClicked(int row, int cell)
{
    QTableWidgetItem *itm= new QTableWidgetItem();
    itm->setIcon(QIcon("data/textures/game/map1/tile1.png"));
    itm->setFlags(itm->flags() & ~Qt::ItemIsEditable);
    ui->tableWidget->setItem (row, cell, itm);
    ui->label->setText(QString::number(row)+" " +QString::number(cell));
}

но при выполнении оно мне говорит

QPainter::begin: Paint device returned engine == 0, type: 3
QPainter::setCompositionMode: Painter not active
QPainter::end: Painter not active, aborted

что я делаю не так?

★★★★

Если ты не назначал делегат, и не переопределял paintEvent, то, согласно гуглу, дело может быть в чём угодно, от левой версии Qt, до кривых дров видеокарты.

summatus ()
Ответ на: комментарий от summatus

Пересобрал в венде. То же самое.
На лейбле с помощью
ui->label->setPixmap(QPixmap(«data/textures/game/map1/tile1.png»));
все отображается.

iSage ★★★★ ()
Ответ на: комментарий от iSage

Скинь минимальный код, если он отличается от этого:

#include <QtGui>

class Table: public QTableWidget {
    Q_OBJECT
public:
    Table() {
        setRowCount( 3 );
        setColumnCount( 1 );
        connect( this, SIGNAL( cellClicked( int, int ) ), this, SLOT( click( int, int ) ) );
    }

protected slots:
    void click( int row, int column ) {
        QTableWidgetItem* item = new QTableWidgetItem;
        item->setIcon( QIcon( "../pic/z.png" ) );
        setItem( row, column, item );
    }
};

#include "moc_main.cpp"

int main(int argc, char **argv)
{
    QApplication a(argc, argv);

    Table table;
    table.show();

    return a.exec();
}
summatus ()
Ответ на: комментарий от summatus

Отличается только тем, что у меня форма в дизайнере нарисована, и соответственно я не делал наследника QTableWidget

iSage ★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.