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
好吧:),我已经在同一时间问了很多问题,这让我有点难过。 –