Tôi khá mới đối với qt và C++ và tôi đã gặp phải một vấn đề mà tôi không thể tìm ra. Tôi muốn mở một cửa sổ không khung và trong suốt khi tôi nhấp vào một nút trên ui chính. Tôi đã có mã làm việc để mở một cửa sổ mới khi tôi nhấn một nút trên ui chính nhưng tôi không thể có vẻ để có được phần không khung và minh bạch làm việc.Cửa sổ không khung và trong suốt qt5
Dưới đây là các mã nguồn cho các chương trình nhỏ mà tôi đã viết thư cho học này
main.cpp
#include "learnwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
LearnWindow w;
w.show();
return a.exec();
}
Đây là LearnWindow.h
#ifndef LEARNWINDOW_H
#define LEARNWINDOW_H
#include <QMainWindow>
#include <transwindow.h>
namespace Ui {
class LearnWindow;
}
class LearnWindow : public QMainWindow
{
Q_OBJECT
public:
explicit LearnWindow(QWidget *parent = 0);
~LearnWindow();
private slots:
void on_pushButton_clicked();
private:
Ui::LearnWindow *ui;
TransWindow *winTrans;
public slots:
void openTrans();
};
#endif // LEARNWINDOW_H
Đây là learnwindow. cpp
#include "learnwindow.h"
#include "ui_learnwindow.h"
LearnWindow::LearnWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::LearnWindow)
{
ui->setupUi(this);
}
LearnWindow::~LearnWindow()
{
delete ui;
}
void LearnWindow::openTrans()
{
winTrans = new TransWindow (this);
//winTrans->setWindowTitle("NewWin");
// winTrans->setWindowFlags(Qt::FramelessWindowHint | Qt::X11BypassWindowManagerHint);
//winTrans->setAttribute(Qt::WA_TranslucentBackground,true);
//winTrans->setAutoFillBackground(false);
//winTrans->setStyleSheet("background:transparent;");
winTrans->show();
}
void LearnWindow::on_pushButton_clicked()
{
openTrans();
}
Đây là transwindow.h
#ifndef TRANSWINDOW_H
#define TRANSWINDOW_H
#include <QDialog>
namespace Ui {
class TransWindow;
}
class TransWindow : public QDialog
{
Q_OBJECT
public:
explicit TransWindow(QWidget *parent = 0);
//setWindowFlags(windowFlags()| Qt::FramelessWindowHint);
~TransWindow();
private:
Ui::TransWindow *ui;
};
#endif // TRANSWINDOW_H
Và đây là transwindow.cpp
#include "transwindow.h"
#include "ui_transwindow.h"
TransWindow::TransWindow(QWidget *parent) :
QDialog(parent),
ui(new Ui::TransWindow)
{
//setWindowTitle("NewWin");
//setWindowFlags(Qt::FramelessWindowHint);
//setAttribute(Qt::WA_TranslucentBackground,true);
ui->setupUi(this);
}
TransWindow::~TransWindow()
{
delete ui;
}
Trong mã nguồn khác nhau bạn sẽ thấy nhận xét ra dòng đó là những điều khác nhau mà tôi đã cố gắng. Đối với hầu hết các vấn đề là, nếu tôi un-nhận xét ra bất kỳ dòng mà cố gắng để thiết lập "Qt :: FramlessWindowHint" chương trình chạy bình thường nhưng không bao giờ mở một cửa sổ mới khi tôi nhấp vào nút trên ui chính.
Nếu tôi không nhận xét bất kỳ dòng nào tôi đặt "Qt :: WA_TranslucentBackground", cửa sổ mới sẽ mở ra khi nút được nhấn trong ui chính nhưng nền của cửa sổ mới là màu đen, không minh bạch.
Thông tin khác mà bạn có thể thích hợp: linux: ubunto 12.04 qt 5.0.2 (64-bit) tạo qt 2.7.1
Giống như tôi đã nói trước đó tôi còn khá mới mẻ tại này và don' Tôi hiểu chính xác những gì tôi đang thiếu để thực hiện công việc này một cách chính xác. Bất kỳ hỗ trợ ai có thể cung cấp sẽ được đánh giá cao.
Tôi xin lỗi, cảm ơn vì đã cho tôi biết thủ tục chính xác. – Caveman
Không sao, tôi rất vui được giúp đỡ! Với câu hỏi về chất lượng đó, bạn sẽ có được đại diện. để upvote trong thời gian không, đừng lo lắng về nó :-) Có rất nhiều thứ về cách các trang web này hoạt động trong phần [help], hoặc trong [FAQ] (http://meta.stackexchange.com/questions/ 7931/faq-for-stack-exchange-sites) trên [meta] nếu bạn đang tìm kiếm thông tin. – Mat