[使用statusBar.addPermanentWidget()时如何删除小部件之间的分隔线?

问题描述 投票:1回答:2

是否可以删除使用.addPermanentWidget()添加到状态栏的两个小部件之间的分隔线?我怀疑这是可能的,但我还没有找到有关如何进行的文献。

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QStatusBar, QLabel


class MainWindow(QMainWindow):

    def __init__(self):
        QMainWindow.__init__(self)

        statusBar = QStatusBar()
        self.setStatusBar(statusBar)
        statusBar.addPermanentWidget(QLabel("Label: "))
        statusBar.addPermanentWidget(QLabel("Data"))


app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())

enter image description here

python python-3.x pyqt pyqt5 qstatusbar
2个回答
1
投票

为了删除两个元素之间的分隔线,您需要在Qt Creator或项目源中为QStatusBar::item设置样式表。

Qt Creator示例:

enter image description here

项目源示例:

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QStatusBar, QLabel


class MainWindow(QMainWindow):

    def __init__(self):
        QMainWindow.__init__(self)

        statusBar = QStatusBar()

        statusBar.setStyleSheet('QStatusBar::item {border: None;}')

        self.setStatusBar(statusBar)
        statusBar.addPermanentWidget(QLabel("Label: "))
        statusBar.addPermanentWidget(QLabel("Data"))


app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())

0
投票

另一种方法是将几个小部件组合在一起以将它们分组,类似于下面的C ++:

    QWidget *widget = new QWidget;
    QLayout* layout = new QHBoxLayout(widget);
    layout->setMargin(0);

    QLabel *label = new QLabel;
    label->setText("Recording status");
    layout->addWidget(label);

    QLabel *m_RecordingStatus = new QLabel;
    m_RecordingStatus->setFrameShape(QFrame::Shape::Box);
    m_RecordingStatus->setFixedWidth(100);

    layout->addWidget(m_RecordingStatus);
    ui.m_statusBar->addPermanentWidget(widget);

您可以将关联的小部件分组以在分隔线之间在一起。

© www.soinside.com 2019 - 2024. All rights reserved.