#qt #overlay #widget #transparent
#qt #наложение #виджет #прозрачный
Вопрос:
Просто небольшой вопрос.
В данный момент я создаю интерфейс своего приложения с помощью Qt. Я устанавливаю фоновое изображение для главной страницы и использую stackedWIdgets для перемещения из одного окна в другое.
setStyleSheet("background-image: url(:/spherebackground.png);"
"background-repeat: no-repeat;"
"background-position: center center");
При запуске приложения появляется страница, состоящая из 3 макетов:
1) Тот, который содержит виджет topToolbar с QPushButtons и ярлык, отображающий заголовок страницы 2) в середине, mainPageLayout, который содержит SlidingStackedWidgets 3) нижняя панель инструментов
mainFrameWidget содержит описание mainFrameLayout:
mainPageWidget=новый QWidget();
mainPageLayout=новый QVBoxLayout();
//I add the buttons and others
mainPageLayout->addWidget(addEntryButton);
mainPageLayout->addWidget(vocaButton);
mainPageLayout->addWidget(exprButton);
mainPageLayout->addWidget(rulesButton);
mainPageLayout->addWidget(learnButton);
mainPageWidget->setLayout(mainPageLayout);
Затем у меня есть другие страницы, созданные с помощью конструктора
А затем функция, которая добавляет страницы в слайд-шоу
void MainWindow::createSlidingStackedWidget() {
//the slidingStacked is the Widget that contains the subslidingWidgets
slidingStacked= new SlidingStackedWidget(this);
slidingStacked->addWidget(mainPageWidget);
quickAddView = new QuickAddController(); //which is a UI widget
slidingStacked->addWidget(quickAddView);
}
И затем, когда нажимается кнопка в mainLayout, она запускает функцию, подобную этой
void MainWindow::slideInAdd(){
topToolBar->clear();
slidingStacked->setVerticalMode(true);
slidingStacked->slideInIdx(1);
setupTopToolBar("Terminer","Ajout Entrée","Modifier");
bottomToolBar->hide();
QObject::connect(goBackButton,SIGNAL(clicked()),this,SLOT(backFromAdd()));
}
Дело в том, что я пытаюсь перенести приложение, которое я создал для iPhone, и я хочу, чтобы оно имело тот же «внешний вид», но при переходе с одной страницы на другую…
1) анимация мерцает 2) Я бы хотел, чтобы скользящие виджеты были прозрачными, за исключением элементов управления (QPushButtons …) но они имеют тот же сферический фон, что и тот, который я настроил в начале кода 3) Мои метки и элементы управления также имеют одинаковое фоновое изображение, когда я хотел бы, чтобы они были стандартными (например: у метки должен быть белый фон)
Я не могу понять, почему…
Надеюсь, это даст вам лучшее представление о том, что происходит…
Комментарии:
1. Майк, не мог бы ты опубликовать больше своего кода, чтобы мы могли понять, как ты структурируешь свои виджеты stacked, и к каким виджетам ты применяешь таблицу стилей.
2. @Jordan : Вот, пожалуйста, еще код. Надеюсь, это поможет вам понять.
Ответ №1:
Что касается 2) и 3), то это потому, что виджеты по умолчанию наследуют палитру своего родителя. Чтобы исправить это, вы можете явно придать им стиль или назначить их палитру палитрой приложения по умолчанию после их создания. Я не знаю, как справиться с первой проблемой.
Комментарии:
1. «или назначьте их палитру в качестве палитры приложения по умолчанию после их создания». Не могли бы вы сообщить мне, как это выглядит в коде, пожалуйста? Я новичок в Qt и я не знаю, как это сделать? Спасибо за вашу помощь.