どのように変更テキストアライメントQTabWidget?
-
25-09-2019 - |
質問
できない方法を見つの文字の大きさを指定するにQTabWidget.
後に私がインスタンスのウィジェットをセットその tabPosition 物がいったテキスト/ラベル付きです。まれにQtの スタイルシート, が、ご覧のとおり、 text-align 物件設定することはできるQPushButtonとQProgressBar.
って検索したのか、 bugreport, は、 非回答質問, 最後に ユーザー ることを示唆を再実施し、塗装()メソッドがあります。も解決すが、私が使っているPython(PyQtはPySide)および方が分からないことを思い出します。
きますか?
編集:コTeukammに書いて、少しのコード:
from PyQt4 import QtGui, QtCore
class HorizontalTabWidget(QtGui.QTabBar):
def paintEvent(self, event):
for index in range(self.count()):
painter = QtGui.QPainter()
painter.begin(self)
painter.setPen(QtCore.Qt.blue);
painter.setFont(QtGui.QFont("Arial", 10));
tabRect = self.tabRect(index)
painter.drawText(tabRect, QtCore.Qt.AlignVCenter | QtCore.Qt.TextDontClip, self.tabText(index));
painter.end()
def sizeHint(self):
return QtCore.QSize(60, 130)
import sys
app = QtGui.QApplication(sys.argv)
tabs = QtGui.QTabWidget()
tabs.setTabBar(HorizontalTabWidget())
widget1 = QtGui.QWidget()
widget2 = QtGui.QWidget()
tabs.addTab(widget1, "Widget1")
tabs.addTab(widget2, "Widget2")
tabs.setTabPosition(2)
tabs.show()
sys.exit(app.exec_())
最後に私は私のテキストを揃えして、私は少し大?) 問題点:をクリックすると、次のように右側のタブ"ボタンをされているとは思いませんが、お送りは currentChanged 信号.この拡大幅のtabRect、paintEventがうまくいきませんでした。どうすれば良いか。
お:)
ちなみ:できないからは継承しQTabWidgetがQTabBar;)
編集:
解消!変更しただけでその方法 sizeHint に tabSizeHint でも)
解決
します。を作成する必要がありますカスタムクラスがクラスのサブクラスQtGui/QTabWidgetびを再定義する塗装方法
class HorizontalTabWidget(QtGui.QTabWidget):
def paintEvent(self, event):
QPainter p;
p.begin(this);
# your drawing code goes here
p.end();
こちらの 書類QWidget.paintEvent る方法で再実装.
もちろん必要なノウハウの絵画作品を一般的に、マニュアルを参照してくださいために QPainter.
残念ながらないPyQt設置のお手軽現時点では表現できませんより特定の解決策です。
他のヒント
私はここでこれを解決しGitHubの上で一緒に仕事の例を入れています。 github.com/LegoStormtroopr/5075267する
コードは同様にまたがっコピーされます:
最小example.pyます:
from PyQt4 import QtGui, QtCore
from FingerTabs import FingerTabWidget
import sys
app = QtGui.QApplication(sys.argv)
tabs = QtGui.QTabWidget()
tabs.setTabBar(FingerTabWidget(width=100,height=25))
digits = ['Thumb','Pointer','Rude','Ring','Pinky']
for i,d in enumerate(digits):
widget = QtGui.QLabel("Area #%s <br> %s Finger"% (i,d))
tabs.addTab(widget, d)
tabs.setTabPosition(QtGui.QTabWidget.West)
tabs.show()
sys.exit(app.exec_())
FingerTabs.pyます:
from PyQt4 import QtGui, QtCore
class FingerTabWidget(QtGui.QTabBar):
def __init__(self, *args, **kwargs):
self.tabSize = QtCore.QSize(kwargs.pop('width'), kwargs.pop('height'))
super(FingerTabWidget, self).__init__(*args, **kwargs)
def paintEvent(self, event):
painter = QtGui.QStylePainter(self)
option = QtGui.QStyleOptionTab()
for index in range(self.count()):
self.initStyleOption(option, index)
tabRect = self.tabRect(index)
tabRect.moveLeft(10)
painter.drawControl(QtGui.QStyle.CE_TabBarTabShape, option)
painter.drawText(tabRect, QtCore.Qt.AlignVCenter |\
QtCore.Qt.TextDontClip, \
self.tabText(index));
def tabSizeHint(self,index):
return self.tabSize