0

请告诉我为什么滚动按钮宽度较小的 QTabBar 滚动按钮之间存在距离,如何解决?

在此处输入图像描述

在这种情况下,我在样式表中有以下内容:

QTabBar::scroller {
    width: 6px;
}

同时,整个悖论是,在一个纯粹的例子中,按钮之间没有距离,我无法理解在我的例子中这怎么会出错。甚至这种缩进的类型也不清楚:它既不是小部件也不是布局,不清楚它是什么类型的对象。

4

2 回答 2

1

这是因为 Qt 版本过时。

于 2022-02-21T11:40:22.267 回答
1

尝试这个?QTabBar 滚动按钮之间的距离可以使用QProxyStyle::pixelMetric

#include "QtWidgetsApplication1.h"
#include <QtWidgets/QApplication>
#include<string>
#include<sstream>
#include<fstream>
#include<iomanip>
#include<QElapsedTimer>
#include<QThread>
#include<QTimer>
#include<QSerialPort>
#include<QTextStream>
#include<QTreeWidget>
#include<QTreeWidgetItem>
#include<QQuickView>
#include<QQmlEngine>
#include<QQmlContext>
#include<QTimer>
#include<iostream>
using namespace std;
#include<QTabBar>
#include <QProxyStyle>

class MyProxyStyle : public QProxyStyle
{
public:
    int pixelMetric(QStyle::PixelMetric metric, const QStyleOption* option = nullptr, const QWidget* widget = nullptr) const override
    {
        if (metric == QStyle::PM_TabBar_ScrollButtonOverlap)
        {
            return -50;
        }
        return QProxyStyle::pixelMetric(metric, option, widget);
    }
};
int main(int argc,char*argv[]) {
    QApplication a(argc, argv);
    a.setStyle(new MyProxyStyle);
    QTabBar bar;
    bar.setMaximumWidth(300);
    bar.setStyleSheet("QTabBar::scroller { width: 100px;}");
    bar.addTab("one");
    bar.addTab("two");
    bar.addTab("threee");
    bar.addTab("aaaaaaaa");
    bar.addTab("bbbbbbbbbbbbb");
    bar.addTab("cccccccccccc");
    bar.addTab("dddd");
    bar.show();
    return a.exec();
}

于 2022-02-22T01:05:42.170 回答