自定义QComboBox

时间:2018-06-29 17:08:59

标签: c++ qt c++11 qcombobox qstylesheet

我要自定义QComboBox。我想看到的行为是一个组合框,它的按钮(朝下的箭头)在折叠时占据了组合框的整个区域。我知道QComboBox是带有QPushButton(或其他一些小部件)的QListWidget。我想更改QPushButton来占据整个区域。我还想摆脱显示当前选择的区域。任何提示将不胜感激!

这就是我想要的:

enter image description here

我可以通过QComboBox::view()->setMinimumWidth()控制下拉列表的宽度。这样,我可以拥有一个更窄的组合框,但下拉列表更宽。这部分完成了。现在我只需要在那里有一个按钮。

2 个答案:

答案 0 :(得分:1)

设置QComboBox按钮,实际上是向下箭头,可以使用down-arrow样式通过样式来完成,但是,由于您要求选择不可见,因此您可以需要注意其他设置,组合框和drop-down的宽度可能应该与您的图像完全匹配,示例样式可以完成此操作:

QComboBox::down-arrow {
    image: url(arrow.png); /* Set combobox button */
}

QComboBox::drop-down {
    width: 20px;  /* set the width of the drop down */
}

QComboBox {
    border: 0px;
    max-width: 20px; /* width of whole box */
}

答案 1 :(得分:1)

好的,因此通过样式表很有可能。这是我所做的:

<ng-container matColumnDef="EditButtonCol">
  <th mat-header-cell *matHeaderCellDef>EditButtonCol</th>
  <td mat-cell *matCellDef="let element">
    <button mat-button (click)="onEdit(CORRESPONDING-ROW)">Edit</button>
  </td>
</ng-container>

如果您看到“左”和“上”具有负值。这会迫使向下箭头的图像左右移动。