[color=green][i][b]
Author:QQ174554431
[/b][/i][/color]
Author:QQ174554431
[/b][/i][/color]
//lockwindow.h
#ifndef LOCKWINDOW_H
#define LOCKWINDOW_H
#include <QtGui/QPushButton>
#include <QtGui/QDialog>
#include <QtGui/QHBoxLayout>
#include <QEvent>
#include <QResizeEvent>
class LockWindow : public QDialog
{
Q_OBJECT
public:
LockWindow(QWidget *parent = 0, Qt::WFlags flags = 0);
~LockWindow();
protected:
void moveEvent(QMoveEvent* pEvent );
void closeEvent ( QCloseEvent * event ) ;
public slots:
void OnButtonLockWindow();
private:
bool isLocked;
QPushButton *lockButton;
QHBoxLayout *hBoxLayout;
QRect m_LockedRect;
Qt::WindowFlags m_windowsFlags;
};
#endif // LOCKWINDOW_H
//lockwindow.cpp
#include "lockwindow.h"
LockWindow::LockWindow(QWidget *parent, Qt::WFlags flags)
: QDialog(parent, flags)
{
isLocked = false;
lockButton = new QPushButton();
lockButton->setText(tr("Lock"));
lockButton->setFixedSize(100,30);
resize(600, 400);
hBoxLayout = new QHBoxLayout(this);
hBoxLayout->addWidget(lockButton);
setMinimumSize(300,200);
setMaximumSize(900,600);
m_windowsFlags = windowFlags();
setLayout(hBoxLayout);
connect(lockButton,SIGNAL(clicked()),this,SLOT(OnButtonLockWindow()));
}
LockWindow::~LockWindow()
{
}
void LockWindow::OnButtonLockWindow()
{
if(isLocked)
{
lockButton->setText("Lock");
setWindowFlags(m_windowsFlags|Qt::WindowStaysOnTopHint);
//or setWindowFlags(windowFlags()&(~Qt::MSWindowsFixedSizeDialogHint));
show();
}
else
{
lockButton->setText("UnLock");
setWindowFlags(m_windowsFlags|Qt::MSWindowsFixedSizeDialogHint |Qt::WindowStaysOnTopHint);
//or setWindowFlags(windowFlags()|Qt::MSWindowsFixedSizeDialogHint|Qt::WindowStaysOnTopHint);
show();
m_LockedRect = this->geometry();
}
isLocked = !isLocked;
}
void LockWindow::moveEvent( QMoveEvent* pEvent )
{
if(isLocked)
{
this->setGeometry(m_LockedRect);
}
QDialog::moveEvent(pEvent);
}
void LockWindow::closeEvent ( QCloseEvent * cEvent )
{
if(isLocked)
{
cEvent->ignore();
}
else
{
QDialog::closeEvent(cEvent);
}
}
//main.cpp
#include "lockwindow.h"
#include <QtGui/QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
LockWindow w;
w.show();
return a.exec();
}