`
mylove2060
  • 浏览: 330720 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

QT-锁定对话框固定不能拉伸和定位并且不能关闭

阅读更多

Author:QQ174554431

//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();
}



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics