|
5Qter豆
这个垂直的tabWidge如何 给文字方向弄水平了呢
通过网上搜集资料,目前了解有以下3种解决方案:
1.通过自定义派生一个QTabwidget类,然后在自定义myQTabWidget类中对于文字等 进行重绘。
不过本人为新手菜鸟,对重绘文本这块不是很懂,还请大侠指点。
2.对于QT原生的QTabwidget类进行QProxyStyle风格设置,具体看以下的代码,
该方法能够实现文字方向水平了,可是给之前通过QSS设置的背景颜色等冲掉了,现在无法设置背景,不知道如何在此基础上重新设置背景,还请了解的大侠指点迷津。
- #include <QtGui>
- class CustomTabStyle : public QProxyStyle
- {
- public:
- QSize sizeFromContents(ContentsType type, const QStyleOption *option,
- const QSize &size, const QWidget *widget) const
- {
- QSize s = QProxyStyle::sizeFromContents(type, option, size, widget);
- if (type == QStyle::CT_TabBarTab)
- { s.transpose();
- s.rwidth()=70;
- s.rheight()=70;
- }
- return s;
- }
- void drawControl(ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const
- {
- if (element == CE_TabBarTabLabel)
- {
- if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(option))
- {
- QStyleOptionTab opt(*tab);
- //opt.shape = QTabBar::RoundedNorth;
- opt.text = tr("Hello");
- //QIcon icon(":/Resources/icon2.ico");
- //opt.icon = icon;
- opt.palette.setCurrentColorGroup(QPalette::Disabled);
- opt.state |= QStyle::State_Sunken;
- QProxyStyle::drawControl(element, &opt, painter, widget);
- return;
- }
- }
- if (element == CE_TabBarTab)
- {
- painter->drawText(5,8,"1123");
- //painter->setBackground(QBrush(Qt::red, Qt::SolidPattern));
- }
- QProxyStyle::drawControl(element, option, painter, widget);
- }
- };
复制代码 然后再给需要设置的QTabWidget控件应用上面的样式:
| ui.myTabWidget->setStyle(new CustomTabStyle);
|
3.就是不要用QTabWidget了,用 QStackedWidget 和 button 组合代替,此方法应该可行。
不过如果上面1,2方法可以解决的话,我就不打算用方法3尝试了。
先谢谢各位帮忙了。 |
最佳答案
查看完整内容
Most of the functionality in QTabWidget is provided by a QTabBar (at the top, providing the tabs) and a QStackedWidget (most of the area, organizing the individual pages).
其实QTabWidget的就是用QTabBar和QStackedWidget实现的,所以最简单的方法就是自己做一个自定义的QTabWidget。
|