Прозрачные виджеты Qt

#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 и я не знаю, как это сделать? Спасибо за вашу помощь.