lin*_*sek 7 icons qt qtablewidget
我尝试了多种方法在 QTableWidget 单元格中显示 QIcon,但我不确定为什么它不起作用。我有一个按钮,按下时会在表格中添加一行。这是代码...
void MainWindow::pressed()
{
QTableWidgetItem *item = new QTableWidgetItem("Hello, world!");
QTableWidgetItem *icon_item = new QTableWidgetItem;
QIcon icon("/verified/path/to/icon.png");
icon_item->setIcon(icon);
int row = ui->tableFeed->rowCount();
ui->tableFeed->insertRow(row);
ui->tableFeed->setItem(row, 0, icon_item);
ui->tableFeed->setItem(row, 1, item);
}
Run Code Online (Sandbox Code Playgroud)
它只是不起作用。该单元格中没有显示任何内容。有任何想法吗?
编辑:我设置它的 setItem 调用icon
是一个错字。实际代码将其设置为QTabeWidgetItem icon_item
. 我在上面的代码中更正了它。
您必须将图标设置为 a QTableWidgetItem
,然后加载图标项而不是图标本身。
QTableWidgetItem *item = new QTableWidgetItem("Hello, world!");
QTableWidgetItem *icon_item = new QTableWidgetItem;
QIcon icon("/verified/path/to/icon.png"); // It is better to load the icon from the
// resource file and not from a path
icon_item->setIcon(icon);
int row = ui->tableFeed->rowCount();
ui->tableFeed->insertRow(row);
ui->tableFeed->setItem(row, 0, icon_item);
ui->tableFeed->setItem(row, 1, item);
Run Code Online (Sandbox Code Playgroud)
如果您可以看到字符串项而不是图标,则说明图标路径有问题。
当我想向单元格添加图标时,我通常在模型中进行。
在数据方法中,您可以将它们放在装饰角色下。
else if( role == Qt::DecorationRole )
{
switch( index.column() )
{
case MOVIE:
{
if( valueAt( index ).toString() == "Godfather" ) return QIcon( ":/16x16/godfather.png" );
}
}
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助。