• 10912阅读
  • 20回复

屏蔽最大化按钮失败?--急得头发都白了! [复制链接]

上一主题 下一主题
离线spancer
 
只看楼主 倒序阅读 楼主  发表于: 2008-10-21
— 本帖被 XChinux 执行加亮操作(2008-10-23) —
QT4.3 & FC8

用KDEVELOP中最简单的例子尝试屏蔽最大化按钮,
却没想到居然不行...

代码:

Qt::WindowFlags flags ;

// flags = ( windowFlags() | Qt::WindowMaximizeButtonHint ) ;
flags = Qt::Window | Qt::WindowMaximizeButtonHint ;

setWindowFlags(flags);

网上找了半天也没找到答案
心里那个郁闷阿~~
高手们来帮帮忙!


----------
结帖!

在另一台安装QT4.3.5开源版本的机子上试了一下,
Demo跑的也不正常。

估计是个BUG,但是网上也没人报过。
我的QT是安装FC8时一起安装的
有时间会安装更高版本的QT,比如4.4.3
至少4.4.0是没有这个问题啦 ^ ^

再次谢谢water_wf,chaoscxm,lazybone的热心帮忙!
[ 此贴被spancer在2008-10-24 11:36重新编辑 ]
离线spancer
只看该作者 1楼 发表于: 2008-10-21
QT4里有没有提供让最大/最小化按钮变灰的API啊??
离线water_wf

只看该作者 2楼 发表于: 2008-10-21
明显应该取非吗!
Qt::WindowFlags flags ;

// flags = ( windowFlags() | Qt::WindowMaximizeButtonHint ) ;
flags = Qt::Window | ~Qt::WindowMaximizeButtonHint ;

setWindowFlags(flags);
离线duduqq

只看该作者 3楼 发表于: 2008-10-22
setWindowFlags(Qt::Dialog) ;不就把最大最小按钮去掉了吗
离线spancer
只看该作者 4楼 发表于: 2008-10-22
引用第3楼duduqq于2008-10-22 08:20发表的  :
setWindowFlags(Qt::Dialog) ;不就把最大最小按钮去掉了吗



我试过用setWindowFlags(Qt::Dialog) ;
是可以把最大最小化按钮去掉的

可我想保留最小化按钮...
离线spancer
只看该作者 5楼 发表于: 2008-10-22
引用第2楼water_wf于2008-10-21 18:02发表的  :
明显应该取非吗!
Qt::WindowFlags flags ;
// flags = ( windowFlags() | Qt::WindowMaximizeButtonHint ) ;
flags = Qt::Window | ~Qt::WindowMaximizeButtonHint ;
.......


按你说的做了,不过编译错误。

cd '/home/beny/123/asdfds' && gmake -k
cd src/ && gmake -f Makefile
正在编译 asdfds.cpp (g++)
asdfds.cpp: In constructor ‘asdfds::asdfds()’:
asdfds.cpp:36: 错误:从 ‘int’ 到 ‘const QFlags<Qt::WindowType>’ 的转换有歧义
/usr/include/QtCore/qglobal.h:1787: 附注:备选为: QFlags<Enum>::QFlags(void**) [with Enum = Qt::WindowType] <就近匹配>
/usr/include/QtCore/qglobal.h:1786: 附注: QFlags<Enum>::QFlags(Enum) [with Enum = Qt::WindowType] <就近匹配>
gmake[1]: *** [asdfds.o] 错误 1
gmake[1]: 由于错误目标“first”并未重新创建。
gmake: *** [sub-src-make_default] 错误 2
gmake: 由于错误目标“first”并未重新创建。
*** 退出状态:2 ***
离线chaoscxm
只看该作者 6楼 发表于: 2008-10-22
flags = Qt::Dialog | Qt::WindowMinimizeButtonHint ;
帖子签名(将在每个帖子下方显示)
离线spancer
只看该作者 7楼 发表于: 2008-10-22
引用第6楼chaoscxm于2008-10-22 08:54发表的  :
flags = Qt::Dialog | Qt::WindowMinimizeButtonHint ;



…………
^ ^ 这个我之前好像有用过,好像不行,再试试,
谢谢各位!
离线spancer
只看该作者 8楼 发表于: 2008-10-22
引用第6楼chaoscxm于2008-10-22 08:54发表的  :
flags = Qt::Dialog | Qt::WindowMinimizeButtonHint ;


编译正常!
运行程序的时候很希望看到最小化按钮出现,
可惜没有~哎
离线chaoscxm
只看该作者 9楼 发表于: 2008-10-22
引用第8楼spancer于2008-10-22 09:00发表的  :
编译正常!
运行程序的时候很希望看到最小化按钮出现,
可惜没有~哎


我在jambi下面测试成功,最大最小化按钮都出现,不过最大化是灰的,不可点击。按理说,jambi只是qt的一个java接口,核心是一样的。

楼主试一下只要最小化按钮的hint,其他的hint都不要加
帖子签名(将在每个帖子下方显示)
离线spancer
只看该作者 10楼 发表于: 2008-10-22
引用第9楼chaoscxm于2008-10-22 09:07发表的  :
我在jambi下面测试成功,最大最小化按钮都出现,不过最大化是灰的,不可点击。按理说,jambi只是qt的一个java接口,核心是一样的。
楼主试一下只要最小化按钮的hint,其他的hint都不要加


好的,我试试
离线spancer
只看该作者 11楼 发表于: 2008-10-22
还是不行,到底是哪里出问题了呢?

苦恼~
离线spancer
只看该作者 12楼 发表于: 2008-10-22
qnamespace.h
-----------------------------
    enum WindowType {
        Widget = 0x00000000,
        Window = 0x00000001,
        Dialog = 0x00000002 | Window,
        Sheet = 0x00000004 | Window,
        Drawer = 0x00000006 | Window,
        Popup = 0x00000008 | Window,
        Tool = 0x0000000a | Window,
        ToolTip = 0x0000000c | Window,
        SplashScreen = 0x0000000e | Window,
        Desktop = 0x00000010 | Window,
        SubWindow =  0x00000012,

        WindowType_Mask = 0x000000ff,
        MSWindowsFixedSizeDialogHint = 0x00000100,
        MSWindowsOwnDC = 0x00000200,
        X11BypassWindowManagerHint = 0x00000400,
        FramelessWindowHint = 0x00000800,
        WindowTitleHint = 0x00001000,
        WindowSystemMenuHint = 0x00002000,
        WindowMinimizeButtonHint = 0x00004000,
        WindowMaximizeButtonHint = 0x00008000,
        WindowMinMaxButtonsHint = WindowMinimizeButtonHint | WindowMaximizeButtonHint,
        WindowContextHelpButtonHint = 0x00010000,
        WindowShadeButtonHint = 0x00020000,
        WindowStaysOnTopHint = 0x00040000,
        CustomizeWindowHint = 0x02000000
------------------------------------------------------

单独设置为Window或者是Dialog,是可以正常显示的。
而下面那部分只有
flags = Qt::Dialog | Qt::FramelessWindowHintt ;
隐藏边框,
除了这个可以正常工作之外,
其他的属性设置好像都不起作用……

什么原因阿??
离线water_wf

只看该作者 13楼 发表于: 2008-10-22
这些操作应该只对window dialog,popup属性的窗口有效
离线spancer
只看该作者 14楼 发表于: 2008-10-22
我用的是QT4.3.5开源版本

在Demo  ‘ Widgets ’里面有个例子 -- 'Window Flags'
分别对Window和Dialog进行添加/删除最小化/最大化按钮操作,
没有效果。

看来不是程序的问题了。
离线water_wf

只看该作者 15楼 发表于: 2008-10-22
帮你在qt4.4.0里面试了一下,工作正常,可以吧最大最小按钮隐藏
离线spancer
只看该作者 16楼 发表于: 2008-10-22
引用第15楼water_wf于2008-10-22 10:57发表的  :
帮你在qt4.4.0里面试了一下,工作正常,可以吧最大最小按钮隐藏


先谢谢你……

你是说Demo里的例子吗?还是用setWindowFlags设置的?
离线lazybone
只看该作者 17楼 发表于: 2008-10-22
Qt Jambi 4.4 可以正常隐藏最大最小按钮 测试完毕
离线spancer
只看该作者 18楼 发表于: 2008-10-22
引用第17楼lazybone于2008-10-22 11:04发表的  :
Qt Jambi 4.4 可以正常隐藏最大最小按钮 测试完毕



拜谢!~
离线water_wf

只看该作者 19楼 发表于: 2008-10-22
引用第16楼spancer于2008-10-22 10:59发表的  :
先谢谢你……
你是说Demo里的例子吗?还是用setWindowFlags设置的?

你说的那个例子
离线spancer
只看该作者 20楼 发表于: 2008-10-23
在另一台同样版本的机器上试了一下,也不正常。
可能是个BUG吧。


结帖咯~
快速回复
限100 字节
 
上一个 下一个