2011-11-09 6 views
4

QTableWidget 셀에 QIcon을 표시하는 데 여러 가지 방법을 시도했으며 왜 작동하지 않는지 잘 모르겠습니다. 나는 눌렀을 때 테이블에 행을 추가하는 버튼이 있습니다. 코드는 다음과 같습니다.Qt-QIcon QTableWidget 셀

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); 
} 

그리고 그냥 작동하지 않습니다. 해당 셀에는 아무 것도 표시되지 않습니다. 어떤 아이디어?

EDIT : setItem을 호출 할 때 icon으로 설정하는 것은 오타였습니다. 실제 코드는 QTabeWidgetItem icon_item으로 설정합니다. 위 코드에서 수정했습니다.

+0

감사를 사용하여 설정, 그것은 나를 위해 일했다해야 볼 수 있습니다! 내 것은 아래처럼, 도움이되기를 바랍니다. 그리고 당신의 문제는 이미지 경로라고 생각합니다. sIconPath = ": /images/NetworkStatusUnkown.png"; // 리소스의 이미지 QTableWidgetItem * item = new QTableWidgetItem (ss); // 상태에서 아이콘을 빌드하십시오. QIcon icon2 (sIconPath); item-> setIcon (icon2); ui-> tableWidgetSearchResult-> setItem (iRow, 0, item); – JohnnyLinTW

답변

1

셀에 아이콘을 추가하려면 일반적으로 모델에서 아이콘을 추가합니다.

데이터 메소드에서 데코 레이션 역할 아래에 넣을 수 있습니다.

else if(role == Qt::DecorationRole) 
{ 
    switch(index.column()) 
    { 
     case MOVIE: 
     { 
      if(valueAt(index).toString() == "Godfather") return QIcon(":/16x16/godfather.png"); 
     } 
    } 
} 

희망이 있습니다.

2

아이콘을 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); 

당신이 문자열 항목이 아닌 아이콘을 볼 수있는 경우는 뭔가 아이콘 경로에 문제가 있습니다.

ui->tableFeed->setItem(row, 0, icon_item); 

를 ... 그것은 참으로 그때 그것 available constructors 중 하나를 사용하여 암시 적 QTableWidgetItem를 구성하는 추측 것 그런 식으로 컴파일 된 경우 : webclectic는 지적

+0

아이콘이 아닌 문자열 항목을 볼 수는 있지만 터미널을 통해 경로를 확인하고 이중 및 삼중을 확인했습니다. 가능한 다른 문제 (아이콘 크기 등)가 있습니까? – linsek

+0

아이콘을 구성하는 선 (사용중인 경로 포함)을 붙여 넣을 수 있습니까? – pnezis

+0

'QIcon 아이콘 ("/ home/njozwiak/Pictures/icon.png "); ' – linsek

2

, 당신은 아마 icon_item에 항목을 설정하려면 .

아이콘이 지정된 PNG로 구성 될 수없는 경우 어떻게 될지 잘 모르겠지만 실제로 아이콘이 제대로로드되어 올바르게 표시되는지 확인해야 할 수도 있습니다. 예를 들어, icon.isNull()은 무엇을 반환합니까? 레이블에 넣으면 어떻게됩니까?

QPixmap p; 
if (!p.load(yourFilename) || p.isNull()) { qDebug() << "Error!"; } 
QIcon icon = QIcon(p); 
// and if wanted: label->setPixmap(p) 
+0

'if (icon.isNull()) {qDebug() << "오류 : null 아이콘";}'을 내 소스에 추가했으나 메시지가 표시되지 않았습니다. 존재하지 않고 여전히 메시지를받지 못했습니다. 파일이 존재하는지 여부와 같아서,'icon'은 null이 아닙니다. – linsek

+0

레이블에 넣으려면 어떻게해야합니까? – linsek

+0

'label.setPixmap (icon.pixmap (너비, 높이))'. 또한 이미지를로드하는 두 번째 방법을 포함하도록 내 게시물을 편집했습니다. –

0

당신이이 일을 먼저 접두사 아이콘 자원을 만들어야합니다 : 당신이 정말로 제대로로드되었는지 확인할 수 있도록

또 다른 옵션은 픽스맵에서 아이콘을로드하는 것입니다

item = QtGui.QTableWidgetItem() 
icon2 = QtGui.QIcon() 
icon2.addPixmap(QtGui.QPixmap(_fromUtf8(":/icons/FSTable.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) 
item.setIcon(icon2) 

사면 그 위의 PyQt는 코드이지만,이 아이콘이 샘플 코드를 addPixmap

관련 문제