문제

테이블 셀에 텍스트가없는 아이콘이 있기를 원합니다.

나는 본다 QTableWidgetItem 클래스는 텍스트를 정렬하는 메소드가 있습니다 (int QTableWidgetItem::textAlignment () const)

나는 아이콘의 배치를 조정하는 방법을 찾지 못합니다 (셀에 텍스트가없는 경우에도 왼쪽에 붙어있는 것 같습니다).

상태와 에너지 열을보십시오.

alt text

도움이 되었습니까?

해결책

스타일 옵션을 통해 텍스트와 관련하여 아이콘 위치에 영향을 줄 수 있습니다.

QtableWidgetItem이 텍스트없이 구성된 경우 (텍스트 인수를 수락하지 않는 생성자를 통해) QT :: DisplayRole 데이터 항목이 설정되지 않으며 텍스트가 표시되지 않으며 아이콘 표시 사각형에 영향을 미치지 않습니다.

QtableWidget을 서브 클래징하고 ViewOptions 메소드를 재정의하고 설정하여 QTableWidgetItem의 아이콘 위치에 영향을 줄 수있었습니다. Decorational Signment 다음과 같은보기 옵션의 필드 :

QStyleOptionViewItem MyTableWidget::viewOptions() const
{
    QStyleOptionViewItem option = QTableWidget::viewOptions();
    option.decorationAlignment = Qt::AlignHCenter | Qt::AlignCenter;
    option.decorationPosition = QStyleOptionViewItem::Top;
    ...
    return option;
}

다른 팁

Qlabel을 CellWidget으로 사용하여 하위 분류없이 해결 한 비슷한 문제가있었습니다.
(슬프게도 레이아웃도 사용해야했습니다) :

int row = 0;
int column = 0;
QSize sizeIcon(32, 32);
QString iconSrc = ":/Actions/myicon.png";

QWidget *pWidget = new QWidget();
QLabel *label = new QLabel;
label->setMaximumSize(sizeIcon);
label->setScaledContents(true);
label->setPixmap(QPixmap(iconSrc));
QHBoxLayout *pLayout = new QHBoxLayout(pWidget);
pLayout->addWidget(label);
pLayout->setAlignment(Qt::AlignCenter);
pLayout->setContentsMargins(0,0,0,0);
pWidget->setLayout(pLayout);

this->ui->myTableWidget->setCellWidget(row, column, pWidget);

다음 접근 방식을 사용했습니다.
http://falsinsoft.blogspot.de/2013/11/qtablewidget-center-checkbox-inside-cell.html

아이콘과 관련된 것을 변경할 수없는 QTableWidgetItem의 기본 동작이라고 생각합니다.

QT의 "Star Delegate 예제"예제를 살펴보십시오. 아마도 문제에 흥미로운 것을 찾을 수 있습니다! 약간의 직업이지만 텍스트가 포함되어 있지 않을 때 셀을 다른 방식으로 "그리기"할 수 있어야합니다!

이것이 조금 도움이되기를 바랍니다!

사용할 수 있습니다 : setCellWidget, 다음과 같이.

QLabel *lbl_item = new QLabel();
lbl_item ->setPixmap(*ui->my_label->pixmap());
lbl_item ->setAlignment(Qt::AlignHCenter);
ui->my_tablewidget->setCellWidget(row, column, lbl_item);

이것은 아이콘을 중앙에 놓습니다

서브 클래스 해야하는 것 같습니다 QTableWidgetItem 그리고 다시 작성하십시오 paintEvent 원하는 위치에 아이콘을 그릴 수있는 기능.

대의원을 사용해야합니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top