Как удалить разделитель между виджетами при использовании `statusBar.addPermanentWidget()`?

Можно ли удалить разделительную линию между двумя виджетами, которые были добавлены в строку состояния с помощью .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_())

введите описание изображения здесь

1 ответ

Решение

Чтобы удалить разделитель между двумя элементами, необходимо установить таблицу стилей для QStatusBar::item в Qt Creator или в исходном коде проекта.

Пример Qt Creator:

Пример источника проекта:

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_())

Другой способ - объединить несколько виджетов в один, чтобы сгруппировать их, что-то вроде 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);

Вы можете сгруппировать связанные виджеты, чтобы они были вместе между разделителями.

Другие вопросы по тегам