Наверняка вопрос простой, но я как начинающий в QT провозился с ним уже много и ответа для своего случая на форуме не нашел.
Итак, имеется проект со следующими файлами:
PreviewWindow.h
C++ (Qt)
#ifndef PREVIEWWINDOW_H
#define PREVIEWWINDOW_H
#include <QWidget>
class QPushButton;
class PreviewWindow : public QWidget
{
Q_OBJECT
public:
PreviewWindow(QWidget *parent = 0);
private:
QPushButton *closeButton;
};
#endif
PreviewWindow.cpp
C++ (Qt)
#include <QtGui>
#include "previewwindow.h"
PreviewWindow::PreviewWindow(QWidget *parent)
: QWidget(parent)
{
closeButton = new QPushButton(tr("&Close"));
connect(closeButton, SIGNAL(clicked()), this, SLOT(close()));
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(closeButton);
this->setLayout(layout);
// QPalette pal = palette();
// pal.setBrush(QPalette::Window, QBrush(QPixmap("C:/Qt/projects/Test/img/btn_up.jpg")));
// closeButton->setPalette(pal);
setStyleSheet("QPushButton {background-image: url(C:/Qt/projects/Test/img/btn_up.jpg); border: none; height: 61; width: 186; font: bold; font-size: 18px; color: #06EAF7; } QPushButton:pressed { background-image: url(:/img/btn_down.jpg); padding-left: 2px; padding-top: 2px; color: #F4BB0D;}");
}
controllerwindow.h
C++ (Qt)
#ifndef CONTROLLERWINDOW_H
#define CONTROLLERWINDOW_H
#include <QWidget>
#include "previewwindow.h"
class QLabel;
class QPushButton;
class ControllerWindow : public QWidget
{
Q_OBJECT
public:
ControllerWindow();
private slots:
void ShowWindow();
private:
PreviewWindow *previewWindow;
QPushButton *quitButton;
QPushButton *showWindowButton;
};
#endif
controllerwindow.cpp
C++ (Qt)
#include <QtGui>
#include "controllerwindow.h"
ControllerWindow::ControllerWindow()
{
previewWindow = new PreviewWindow(this);
quitButton = new QPushButton(tr("&Quit"));
connect(quitButton, SIGNAL(clicked()), qApp, SLOT(quit()));
showWindowButton = new QPushButton(tr("&Show window"));
connect(showWindowButton, SIGNAL(clicked()), this, SLOT(ShowWindow()));
QHBoxLayout *bottomLayout = new QHBoxLayout;
bottomLayout->addStretch();
bottomLayout->addWidget(quitButton);
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addWidget(showWindowButton);
mainLayout->addLayout(bottomLayout);
setLayout(mainLayout);
setWindowTitle(tr("Test"));
}
void ControllerWindow::ShowWindow()
{
Qt::WindowFlags flags = 0;
flags = Qt::SplashScreen;
flags |= Qt::FramelessWindowHint;
previewWindow->setWindowFlags(flags);
previewWindow->setWindowState(Qt::WindowFullScreen);
previewWindow->show();
}
main.cpp
C++ (Qt)
#include <QApplication>
#include "controllerwindow.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
ControllerWindow controller;
controller.show();
return app.exec();
}
1 - При любых раскладах (и с абсолютным путем к jpg и с относительным, и с css и с QPalette (закоментированным выше)) картинки у меня не подгружаются в принципе. Если менять background, color или любой другой атрибут css то все отображается нормально, но с картинками выходит полный облом. Как это побороть?
2 - В окне ContorollerWindow при запуске появляется кнопка Close которая каким-то образом попадает туда из окна previewwindow т.к. изменение стиля влияет и на нее. Если ее нажать, то она исчезает. Так-же она исчезает если закрыть окно previewwindow, но вот откуда она берется?
Пробую все под WinXP, qt 4.5.0