Как удалить разделитель между виджетами при использовании `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);
Вы можете сгруппировать связанные виджеты, чтобы они были вместе между разделителями.