QSplitter становится неразличимым между QWidget и QTabWidget

Я помещаю QWidget и QTabWidget рядом друг с другом в один горизонтальный сплиттер. И сплиттер теряет свою форму, вы можете узнать, что сплиттер есть только при наведении на него мыши. Как сделать это видимым?

Спасибо.

15
задан Daniel Hedberg 20 February 2013 в 22:18
поделиться

2 ответа

Поскольку 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);

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

27
ответ дан 1 December 2019 в 00:49
поделиться

Это верно для каждого сплиттера, по крайней мере, с 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

7
ответ дан 1 December 2019 в 00:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: