• 24581阅读
  • 12回复

如何禁用Widget的工具栏的关闭功能啊【已解决】 [复制链接]

上一主题 下一主题
离线fox1987
 
只看楼主 倒序阅读 楼主  发表于: 2010-04-08
就是Widget带的上面一栏的Windows类似的工具栏。。。
上面有最小化。最大化和关闭三个按钮。。
我现在想禁用关闭按钮。。
自己提供一个关闭功能的。。
然后还想要上面那个工具栏,因为发现用setWindowFlags(Qt::FramelessWindowHint)之后无法移动该Widget了。。
不方便。。
有没有解决的办法啊。。。。
[ 此帖被fox1987在2010-04-08 13:58重新编辑 ]
离线yangfanxing
只看该作者 1楼 发表于: 2010-04-08
PHPWind好恶心。。。不想看这种界面。。。
离线fox1987
只看该作者 2楼 发表于: 2010-04-08
我想知道可不可以通过设置WindowFlag的属性可以做到这点啊。。
离线fox1987
只看该作者 3楼 发表于: 2010-04-08
还有我试了重写了怎么还不行呢。。。
我这么写的
PhoneWidget::PhoneWidget(QWidget* parent/* =0 */):QWidget(parent)
{

}

void PhoneWidget::closeEvent(QCloseEvent * event)
{
    if(event->type()==QEvent::Close)
    {
        QMessageBox msg;
        msg.setText("cloase");
        msg.exec();
    }
    else
    {
        QMessageBox msg;
        msg.setText("other");
        msg.exec();
    }
    
}
发现每次也只有QEvent::Close调用,但是把msssageBox关掉后,Widget也释放了。。
离线yangfanxing
只看该作者 4楼 发表于: 2010-04-08
Qt::WindowTitleHint
可以用这个,就连Alt+F4都关不掉~
PHPWind好恶心。。。不想看这种界面。。。
离线fox1987
只看该作者 5楼 发表于: 2010-04-08
Re:如何禁用Widget的工具栏的关闭功能啊【以解决】
引用第4楼yangfanxing于2010-04-08 11:34发表的  :
Qt::WindowTitleHint
可以用这个,就连Alt+F4都关不掉~

试了 还不成

我现在用setWindowFlags(Qt::CustomizeWindowHint|Qt::WindowTitleHint);得到我想要的效果了。。
离线浪漫天使
只看该作者 6楼 发表于: 2010-04-08
楼上的楼上就是楼上的意思。
离线fox1987
只看该作者 7楼 发表于: 2010-04-08
我现在还想问一下的是为什么我那么重写closeEvent不行呢。。
离线浪漫天使
只看该作者 8楼 发表于: 2010-04-08
  1. void PhoneWidget::closeEvent(QCloseEvent * event)
  2. {
  3.     if(event->type()==QEvent::Close)
  4.     {
  5.         QMessageBox msg;
  6.         msg.setText("cloase");
  7.         msg.exec();
  8.     }
  9.     else
  10.     {
  11.         QMessageBox msg;
  12.         msg.setText("other");
  13.         msg.exec();
  14.     }
  15.     
  16. }


改成
  1. void PhoneWidget::closeEvent(QCloseEvent * event)
  2. {
  3.     event->ignore();
  4. }


下面是我抄自文档的
  1. void MainWindow::closeEvent(QCloseEvent *event)
  2. {
  3.      if (maybeSave()) {
  4.          writeSettings();
  5.          event->accept();
  6.      } else {
  7.          event->ignore();
  8.      }
  9. }


还有就是 其实QCloseEvent 本身基本就是 event->type()=QEvent::Close
离线xlttap

只看该作者 9楼 发表于: 2010-04-08
引用第7楼fox1987于2010-04-08 14:09发表的  :
我现在还想问一下的是为什么我那么重写closeEvent不行呢。。

因为你没有加上event->igore();
我简单我快乐
离线yangfanxing
只看该作者 10楼 发表于: 2010-04-08
引用第6楼浪漫天使于2010-04-08 14:07发表的  :
楼上的,楼上就是楼上的意思。


引用第6楼浪漫天使于2010-04-08 14:07发表的  :
楼上的楼上,就是楼上的意思。


于是我数明白了~~~
PHPWind好恶心。。。不想看这种界面。。。
离线fox1987
只看该作者 11楼 发表于: 2010-04-08
引用第8楼浪漫天使于2010-04-08 14:19发表的  :
[code]
void PhoneWidget::closeEvent(QCloseEvent * event)
{
    if(event->type()==QEvent::Close)
    {
.......



恩 这个好使 谢谢了。!
离线luoyes

只看该作者 12楼 发表于: 2010-04-10
Re:Re:如何禁用Widget的工具栏的关闭功能啊【以解决】
引用第5楼fox1987于2010-04-08 13:58发表的 Re:如何禁用Widget的工具栏的关闭功能啊【以解决】 :
试了 还不成
我现在用setWindowFlags(Qt::CustomizeWindowHint|Qt::WindowTitleHint);得到我想要的效果了。。


按下ESC就退出了,看来还得重写keypressEvent,呵呵
快速回复
限100 字节
 
上一个 下一个