2
我想問一些正在發生的事情,當我與QMainWindow和QWidget一起使用QHBoxLayout。我試圖通過連接2個小部件來改變窗口標題樣式。 該發生的事情: 在QWidget的 QBoxLayout與QMainWindow與QWidget
這是此代碼: TitleBar.h
#ifndef MYTITLEBAR_H
#define MYTITLEBAR_H
#include <QMainWindow>
#include <QMouseEvent>
#include <QToolButton>
#include <QStyle>
#include <QLabel>
#include <QHBoxLayout>
#include <QPixmap>
class MyTitleBar : public QWidget
{
public:
MyTitleBar(QWidget* parent);
public slots:
void showSmall();
void showMaxRestore();
protected:
void mousePressEvent(QMouseEvent* me);
void mouseMoveEvent(QMouseEvent* me);
private:
QToolButton* minimize;
QToolButton* maximize;
QToolButton* close;
QToolButton* custom;
QPixmap restorePix, maxPix, closePix, minPix, customPix;
bool maxNormal;
QPoint startPos;
QPoint clickPos;
};
#endif // MYTITLEBAR_H
TitleBar.cpp
#include "mytitlebar.h"
MyTitleBar::MyTitleBar(QWidget* parent)
{
this->setWindowFlags(Qt::FramelessWindowHint);
minimize = new QToolButton(this);
maximize = new QToolButton(this);
close = new QToolButton(this);
custom = new QToolButton(this);
closePix.load("close.png");
close->setIcon(closePix);
maxPix.load("maximize.png");
maximize->setIcon(maxPix);
minPix.load("minimize.png");
minimize->setIcon(minPix);
customPix.load("custom_icon.png");
custom->setIcon(customPix);
QLabel* label = new QLabel(this);
label->setText("Custom Window");
QHBoxLayout* HBox = new QHBoxLayout(this);
HBox->addWidget(custom);
HBox->addWidget(label);
HBox->addWidget(minimize);
HBox->addWidget(maximize);
HBox->addWidget(close);
}
void MyTitleBar::showSmall()
{
}
void MyTitleBar::showMaxRestore()
{
}
void MyTitleBar::mousePressEvent(QMouseEvent *me)
{
}
void MyTitleBar::mouseMoveEvent(QMouseEvent *me)
{
}
下的QMainWindow:
代碼與QWidget完全相同,但我已將父代和繼承更改爲QMainWindow。並返回問題爲什麼發生這種情況以及我如何解決此問題?在主窗口中,它只是將類移動到正確的位置,它看起來像一個窗口標題欄,並且與QWidget和QMainWindow相同。 我需要使用QMainWindow作爲父項,因爲主窗口是QMainWindow的繼承。
Thx回答,只是一個順便說一句問題,如果我從QGraphicsItem繼承許多類並實現它們mousePressEvent(..),這種方法會對任何按下或按下這個項目的反應? –
我不知道,從邏輯上講,它只會壓在項目上,但你應該檢查文檔,如果不清楚,做一個小測試項目,如果你仍然有疑問問另一個問題(如果你繼續這裏那些曾經使用過QGraphicsItem並且知道答案的人可能會跳過這個問題和評論) – Zlatomir
好吧:),我已經在同一時間問了很多問題,這讓我有點難過。 –