qt 自定义最大化,最小化,还原,解决还原位置不对等问题

//初始化最大化/还原、最小化,关闭的按钮,并关联槽函数
CloseButton= new QPushButton(this);
maxButton= new QPushButton(this);
mixButton= new QPushButton(this);
initRightButton();
connect(CloseButton,&QPushButton::clicked,this,&helloWord::closesWindow);
connect(maxButton,&QPushButton::clicked,this,&helloWord::maxsWindow);
connect(mixButton,&QPushButton::clicked,this,&helloWord::mixsWindow);

helloWord::~helloWord()
{
delete ui;
}
//初始化按钮的位置(右上角)
void helloWord::initRightButton(int x, int y)
{

CloseButton->setGeometry(this->frameGeometry().width()-closeWidght,this->pos().y(),closeWidght,closeHeight);
CloseButton->setStyleSheet(QString("QPushButton{border-image:url(:/new/prefix1/image/close.png);}"
                                   "QPushButton:hover{border-image:url(:/new/prefix1/image/close(hieght).png)}"));

maxButton->setGeometry(this->frameGeometry().width()-closeWidght-maxWidght,this->pos().y(),maxWidght,maxHeight);

mixButton->setGeometry(this->frameGeometry().width()-closeWidght-maxWidght-mixWidght,this->pos().y(),mixWidght,mixHeight);
mixButton->setStyleSheet(QString("QPushButton{border-image:url(:/new/prefix1/image/mix.png);}"));

}

void helloWord::closesWindow()
{
this->close();
}
//实现最大化/最小化功能,并解决还原位置不对的问题
void helloWord::maxsWindow()
{

qDebug()<<rect0.x()<<rect0.y();
if(WindowMarker ==0)
{
    //记住原来的位置
    rect0 = geometry();
    Sourcex = rect0.x();
    Sourcey = rect0.y();

// //获取分辨率
QScreen* screen=QGuiApplication::primaryScreen ();
QRect mm=screen->availableGeometry() ;
int Maxnum =mm.width();
int Mixnum =mm.height();
//设置最大化
setFixedSize(Maxnum,Mixnum);

     move(0,0);
    initRightButton();
    WindowMarker =1;

}else if(WindowMarker == 1)
{
    //设置界面大小
    setFixedSize( Sourcewidght,SourceHeight);
    //初始化按钮位置
     initRightButton();
    qDebug()<<Sourcex<<Sourcey;
    //还原位置
    move(Sourcex,Sourcey);

    WindowMarker =0;
}

}
//实现最小化功能
void helloWord::mixsWindow()
{
showMinimized();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

莫回首�

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值