回答編集履歴
3
壁紙の設定方法についてスクリーンショットを追加
test
CHANGED
@@ -1,4 +1,8 @@
|
|
1
|
+
## 横書きに修正
|
2
|
+
|
3
|
+
|
4
|
+
|
1
|
-
|
5
|
+
幾つか方法があります。
|
2
6
|
|
3
7
|
|
4
8
|
|
@@ -12,17 +16,19 @@
|
|
12
16
|
|
13
17
|
|
14
18
|
|
15
|
-
|
19
|
+
----
|
16
|
-
|
20
|
+
|
17
|
-
|
21
|
+
## 背景画像について
|
18
|
-
|
22
|
+
|
23
|
+
|
24
|
+
|
19
|
-
|
25
|
+
```diff
|
20
|
-
|
21
|
-
|
22
|
-
|
26
|
+
|
23
|
-
`QWidget{background-image: url(C:/work/bottomBlue.png);`
|
27
|
+
- `QWidget{background-image: url(C:/work/bottomBlue.png);`
|
28
|
+
|
24
|
-
|
29
|
+
+ `QTabBar::tab{background-image: url(C:/work/bottomBlue.png);`
|
30
|
+
|
25
|
-
|
31
|
+
```
|
26
32
|
|
27
33
|
|
28
34
|
|
@@ -30,12 +36,20 @@
|
|
30
36
|
|
31
37
|
ボタンなども影響を受けてしまいます。
|
32
38
|
|
33
|
-
タブ部分のスタイルを設定するなら、QWidget ではなく QTabBar::tab に記述。
|
39
|
+
タブ部分のスタイルを設定するなら、QWidget ではなく **QTabBar::tab** に記述。
|
34
40
|
|
35
41
|
また、Qt の スタイルシートでは transform はサポートされてなかったはずです。
|
36
42
|
|
37
43
|
|
38
44
|
|
45
|
+
![イメージ説明](893b6e51f3b07f1f069f1d5bfc28a13d.png)
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
※↑色を変えただけみたいになってますが、壁紙画像を指定してます。
|
50
|
+
|
51
|
+
|
52
|
+
|
39
53
|
[Qt5 Stylesheet reference](https://doc.qt.io/qt-5/stylesheet-reference.html)
|
40
54
|
|
41
55
|
|
2
参考リンクを追加
test
CHANGED
@@ -52,6 +52,8 @@
|
|
52
52
|
|
53
53
|
|
54
54
|
|
55
|
+
|
56
|
+
|
55
57
|
```cpp
|
56
58
|
|
57
59
|
|
@@ -184,6 +186,8 @@
|
|
184
186
|
|
185
187
|
|
186
188
|
|
189
|
+
参考: [13293-QTabWidget-customization](https://www.qtcentre.org/threads/13293-QTabWidget-customization)
|
190
|
+
|
187
191
|
|
188
192
|
|
189
193
|
----
|
1
C++のコードを追加。Pythonのコードに注意書きを追記
test
CHANGED
@@ -48,10 +48,160 @@
|
|
48
48
|
|
49
49
|
|
50
50
|
|
51
|
+
追記: C++で動作確認したときのコードです。(QProxyStyleを利用して横書きに修正)
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
```cpp
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
#include <QApplication>
|
60
|
+
|
61
|
+
#include <QMainWindow>
|
62
|
+
|
63
|
+
#include <QTabWidget>
|
64
|
+
|
65
|
+
#include <QTabBar>
|
66
|
+
|
67
|
+
#include <QLabel>
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
#include <QProxyStyle>
|
72
|
+
|
73
|
+
#include <QStyleOption>
|
74
|
+
|
75
|
+
#include <QtCore>
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
|
80
|
+
|
81
|
+
class CustomTabStyle : public QProxyStyle {
|
82
|
+
|
83
|
+
public:
|
84
|
+
|
85
|
+
QSize sizeFromContents(ContentsType type, const QStyleOption* option,
|
86
|
+
|
87
|
+
const QSize& size, const QWidget* widget) const {
|
88
|
+
|
89
|
+
|
90
|
+
|
91
|
+
QSize s = QProxyStyle::sizeFromContents(type, option, size, widget);
|
92
|
+
|
93
|
+
if (type == QStyle::CT_TabBarTab) {
|
94
|
+
|
95
|
+
s.transpose();
|
96
|
+
|
97
|
+
}
|
98
|
+
|
99
|
+
return s;
|
100
|
+
|
101
|
+
}
|
102
|
+
|
103
|
+
|
104
|
+
|
105
|
+
void drawControl(ControlElement element, const QStyleOption* option, QPainter* painter, const QWidget* widget) const {
|
106
|
+
|
107
|
+
if (element == CE_TabBarTabLabel) {
|
108
|
+
|
109
|
+
if (const QStyleOptionTab* tab = qstyleoption_cast<const QStyleOptionTab*>(option)) {
|
110
|
+
|
111
|
+
QStyleOptionTab opt(*tab);
|
112
|
+
|
113
|
+
opt.shape = QTabBar::RoundedNorth;
|
114
|
+
|
115
|
+
QProxyStyle::drawControl(element, &opt, painter, widget);
|
116
|
+
|
117
|
+
return;
|
118
|
+
|
119
|
+
}
|
120
|
+
|
121
|
+
}
|
122
|
+
|
123
|
+
QProxyStyle::drawControl(element, option, painter, widget);
|
124
|
+
|
125
|
+
}
|
126
|
+
|
127
|
+
};
|
128
|
+
|
129
|
+
|
130
|
+
|
131
|
+
int main(int argc, char *argv[])
|
132
|
+
|
133
|
+
{
|
134
|
+
|
135
|
+
QApplication app(argc, argv);
|
136
|
+
|
137
|
+
QMainWindow win;
|
138
|
+
|
139
|
+
QTabWidget tab(&win);
|
140
|
+
|
141
|
+
QLabel labelA("Hello", &tab);
|
142
|
+
|
143
|
+
QLabel labelB("Hello", &tab);
|
144
|
+
|
145
|
+
CustomTabStyle style;
|
146
|
+
|
147
|
+
|
148
|
+
|
149
|
+
tab.addTab(&labelA, "日本語");
|
150
|
+
|
151
|
+
tab.addTab(&labelB, "OK");
|
152
|
+
|
153
|
+
tab.setTabPosition(QTabWidget::West);
|
154
|
+
|
155
|
+
tab.tabBar()->setStyle(&style);
|
156
|
+
|
157
|
+
|
158
|
+
|
159
|
+
win.setWindowTitle("Test");
|
160
|
+
|
161
|
+
win.setCentralWidget(&tab);
|
162
|
+
|
163
|
+
win.show();
|
164
|
+
|
165
|
+
|
166
|
+
|
167
|
+
return app.exec();
|
168
|
+
|
169
|
+
}
|
170
|
+
|
171
|
+
|
172
|
+
|
173
|
+
```
|
174
|
+
|
175
|
+
|
176
|
+
|
177
|
+
![イメージ説明](143786c9d4b1f9386eee54a00814f9c3.png)
|
178
|
+
|
179
|
+
![イメージ説明](a54af773107510932e784e8e24bd274b.png)
|
180
|
+
|
181
|
+
|
182
|
+
|
183
|
+
応用すれば、縦書きも可能です。
|
184
|
+
|
185
|
+
|
186
|
+
|
187
|
+
|
188
|
+
|
189
|
+
----
|
190
|
+
|
51
191
|
### 簡単な方法
|
52
192
|
|
53
193
|
|
54
194
|
|
195
|
+
**追記: 以下はPythonのコードでした。**
|
196
|
+
|
197
|
+
|
198
|
+
|
199
|
+
コードは参考になりませんが、
|
200
|
+
|
201
|
+
アプローチ自体はC++でも同様の方法で可能です。
|
202
|
+
|
203
|
+
|
204
|
+
|
55
205
|
```
|
56
206
|
|
57
207
|
tab.addTab(widget, "")
|
@@ -68,6 +218,10 @@
|
|
68
218
|
|
69
219
|
|
70
220
|
|
221
|
+
**追記: 以下はPythonのコードでした。**
|
222
|
+
|
223
|
+
|
224
|
+
|
71
225
|
[PyQt5 メモ tab2.py](http://penguinitis.g1.xrea.com/computer/programming/Python/PyQt5/PyQt5-memo/PyQt5-memo.html)
|
72
226
|
|
73
227
|
|
@@ -76,8 +230,6 @@
|
|
76
230
|
|
77
231
|
|
78
232
|
|
79
|
-
----
|
80
|
-
|
81
233
|
### QProxyStyleを使う方法
|
82
234
|
|
83
235
|
|
@@ -134,20 +286,8 @@
|
|
134
286
|
|
135
287
|
|
136
288
|
|
137
|
-
詳しい説明は省きますが、
|
289
|
+
~~詳しい説明は省きますが、
|
138
290
|
|
139
291
|
C++のクラスに対してPythonの関数を設定しても呼ばれないので、
|
140
292
|
|
141
|
-
PyQtの提供する PythonのQTabBar を設定してます。(ここはC++であれば不要)
|
293
|
+
PyQtの提供する PythonのQTabBar を設定してます。(ここはC++であれば不要)~~
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
![イメージ説明](143786c9d4b1f9386eee54a00814f9c3.png)
|
148
|
-
|
149
|
-
![イメージ説明](a54af773107510932e784e8e24bd274b.png)
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
応用すれば、縦書きも可能です。
|