Я помещаю QWidget и QTabWidget рядом друг с другом в один горизонтальный сплиттер. И сплиттер теряет свою форму, вы можете узнать, что сплиттер есть только при наведении на него мыши. Как сделать это видимым?
Спасибо.
Поскольку QSplitterHandle (это то, что думает большинство людей of as "разделитель") происходит от QWidget, вы можете добавлять к нему другие виджеты. Вот что я делал для решения этой точной проблемы в прошлом:
// Now add the line to the splitter handle
// Note: index 0 handle is always hidden, index 1 is between the two widgets
QSplitterHandle *handle = pSplitter->handle(1);
QVBoxLayout *layout = new QVBoxLayout(handle);
layout->setSpacing(0);
layout->setMargin(0);
QFrame *line = new QFrame(handle);
line->setFrameShape(QFrame::HLine);
line->setFrameShadow(QFrame::Sunken);
layout->addWidget(line);
Это добавляет утопленную линию к дескриптору разделителя. Вы, конечно, можете выбрать другой стиль для строки кадра
или использовать что-то совершенно другое в качестве виджета, который вы добавляете к дескриптору разделителя.
Это верно для каждого сплиттера, по крайней мере, с WinXP и темой Luna по умолчанию (переход на классический решает проблему). Если вы хотите остаться с Luna, вы можете изменить способ рендеринга сплиттеров, например изменив цвет фона ручки.
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
a.setStyleSheet("QSplitter::handle { background-color: gray }");
MainWindow w;
w.show();
return a.exec();
}
Вы можете найти больше о таблицах стилей Qt на https://doc.qt.io/qt-5/stylesheet-reference.html