設定した場合:QHeaderView::down-arrow { subcontrol-position: center left}
、下矢印は列の左側にあり、center right
を設定すると、列の右側に配置されますしかし、私はタイトルの横に(右側に)矢印を配置したいと思います。Qt:QHeaderViewヘッダーテキストの右側にソートインジケーターを配置します
0
A
答えて
0
を私はソート方法は、ヘッダのQProxyStyleを作成することによりだった、とdrawControlをオーバーライドします。 また、デフォルトアイコンを非表示にするために空のアイコンを割り当てました。
treeviewHeaderProxy* m_oHeaderStyle = new treeviewHeaderProxy();
treeview->header()->setStyle(m_oHeaderStyle);
treeview->header()->setDefaultAlignment(Qt::AlignCenter);
treeview->header()->setStyleSheet("QHeaderView::down-arrow { image: url(:/shared/empty); }"
"QHeaderView::up-arrow { image: url(:/shared/empty); } ");
treeviewHeaderProxy.h
:
class treeviewHeaderProxy : public QProxyStyle
{
public:
explicit treeviewHeaderProxy();
void drawControl(ControlElement oCtrElement, const QStyleOption * poStylrOptionption, QPainter * poPainter, const QWidget * poWidget = 0) const;
};
treeviewHeaderProxy.cpp
:
void treeviewHeaderProxy::drawControl(ControlElement oCtrElement, const QStyleOption *poStyleOptionption, QPainter *poPainter, const QWidget *poWidget) const
{
// Header label?
if (oCtrElement == CE_HeaderLabel) {
QStyleOptionHeader *poStyleOptionHeader = (QStyleOptionHeader *) poStyleOptionption;
QStyleOptionHeader::SortIndicator sortOption = poStyleOptionHeader->sortIndicator;
QRect oRect = poStyleOptionHeader->rect;
// Text
int iTextWidth = poStyleOptionHeader->fontMetrics.width(poStyleOptionHeader->text);
int iTextHeight = poStyleOptionHeader->fontMetrics.height();
QRect oTextRect = QRect(oRect.left() + oRect.width(), catRect.top() + (oRect.height() - iTextHeight)/2,
iTextWidth*1.2, iTextHeight);
poPainter->setPen(SUPER_DARK_GREY);
poPainter->drawText(oTextRect, poStyleOptionHeader->text); // Draw text
// Sort Indicator
QPixmap oSortPixmap;
switch(sortOption){
case QStyleOptionHeader::SortDown:
oSortPixmap = QIcon(":/shared/drop_up_grey").pixmap(10,10);
break;
case QStyleOptionHeader::SortUp:
oSortPixmap = QIcon(":/shared/drop_down_grey").pixmap(10,10);
break;
}
if(!oSortPixmap.isNull()){
QRect oSortRect = QRect(oTextRect.left() + oTextRect.width(), oRect.top() + (oRect.height() - oSortPixmap.height())/2,
oSortPixmap.width(), oSortPixmap.height());
poPainter->drawPixmap(oSortRect, oSortPixmap); // Draw sortIcon
}
return;
}
QProxyStyle::drawControl(oCtrElement, poStyleOptionption, poPainter, poWidget);
}
初期化()で
1
あなたがsubcontrol-origin: margin | border | padding | content
を設定する必要があります。
ボックスモデル(余白矩形、境界矩形、パディング矩形、内容矩形について説明しています)を理解するには、以下のドキュメントリンクを参照してください。
http://doc.qt.io/qt-5/stylesheet-customizing.html#the-box-model
だからあなたのコンテンツの隣に追加することができた、あなたのコードにsubcontrol-origin:padding
を追加してみてください。
は、以下のようなもの試してみてください:
QHeaderView::down-arrow { subcontrol-origin:padding; subcontrol-position: center right;}
関連する問題
- 1. divの右側にテキストを配置
- 2. JTabbedPaneのタブの右側にコンポーネントを配置します。
- 3. CSS:浮動小数点の右側にdivを配置します。右
- 4. テキストインプットアドオンのアドオンをRの右側に配置できますか?
- 5. 右側にブートストラップメニューアイコンを配置する必要があります
- 6. UITabBarController UITabBarItemsは左側に配置されていますが、右側に配置されます
- 7. どのように見出しの右側にアイコンを配置しますか?
- 8. ボタンの右側にTextViewを配置して中央揃えしますか?
- 9. ボタン・グループをリスト項目の右側に配置する方法
- 10. CSSの右側に要素を配置する
- 11. イメージの右側にテキストを配置する方法は?
- 12. アルファベット順インデックスをUITableviewの右側に配置する方法
- 13. HTML/CSS/Bootstrap - Dropboxメニューをボタンの右側に配置する
- 14. リストビューの右側にイメージキーを配置する方法
- 15. UITableViewCellの右側にデータを配置する方法
- 16. 凡例をドーナツチャートの右側に配置する方法
- 17. "コンテナ"の右側に要素を配置するブートストラップCss
- 18. 右側のsap.m.Toolbarにsap.m.Buttonを配置する方法は?
- 19. アンドロイドの右側にボタンを配置する
- 20. 図の右側にfigcaptionを配置する方法は?
- 21. イメージをテキストの左に置き、アイコンをテキストの右側に配置する
- 22. PHP:Zend Form要素のラベルを要素の右側に配置
- 23. div要素を右側に重ねて配置する
- 24. 擬似:after要素をリスト項目の右側に配置
- 25. Google視覚化API - Y軸を右側に配置しますか?
- 26. ページの右側にイメージを置く
- 27. 固定配置されたテーブルセルの内容を右側に揃えますか?
- 28. ImageViewはXamarin Androidの親の右側に配置されています
- 29. 要素を絶対的に配置するが、別の要素の右側に配置する
- 30. テキストがテキストの右側に配置されないCSSがあります
これは機能しません、矢印は右側に配置されます。矢印の中心が右隅にあるので、矢印の半分しか見ることができません...サブコントロールの起点を使用して可能性の値を変更して、違いがあるかどうかを確認しようとしましたが、効果を出す。 – laurapons