• 7153阅读
  • 20回复

实现一个像浏览器一样的标签页功能 [复制链接]

上一主题 下一主题
离线iiiyyyhhhsss
 

只看楼主 倒序阅读 楼主  发表于: 2009-09-01
在designer上有一个Tab Widget的差不多能够实现,但缺少页面的删除按钮和增加按钮,有办法增加这两个按钮吗?
离线dbzhang800

只看该作者 1楼 发表于: 2009-09-01
唉,都不知道该怎么回了

还是再建议楼主认真看看manual吧,无论是 QTabWidget还是 QTabBar的都有介绍!


tabsClosable : bool

This property holds whether close buttons are automatically added to each tab.

This property was introduced in Qt 4.5.

Access functions:

bool tabsClosable () const
void setTabsClosable ( bool closeable )
See also QTabBar::tabsClosable().
离线iiiyyyhhhsss

只看该作者 2楼 发表于: 2009-09-01
呵呵,为什么我之前一个一个找都找不到。。。。
继续努力。。。
离线iiiyyyhhhsss

只看该作者 3楼 发表于: 2009-09-01
我找到了
int addTab()函数,但是在designer的Property里找不到对应的属性,如何添加增加添加标签页按钮?

由于ui文件是不能修改其代码的,怎么办呢?
离线dbzhang800

只看该作者 4楼 发表于: 2009-09-01
引用第3楼iiiyyyhhhsss于2009-09-01 17:43发表的  :
我找到了
int addTab()函数,但是在designer的Property里找不到对应的属性,如何添加增加添加标签页按钮?
由于ui文件是不能修改其代码的,怎么办呢?


你的ui文件肯定对应一个类,所有东西都在这个类里面改
离线iiiyyyhhhsss

只看该作者 5楼 发表于: 2009-09-01
我知道我的ui文件对应一个类,例如

*.ui    moc_*.cpp   和   ui_*.h     肯定是同时出现的,那么你说在这个类里面改的话,是指直接在ui上改还是在cpp和h里改呢?

但是有一点是肯定的,无论我怎么改.cpp和.h,工程更新后,cpp和h总是根据ui来重新载入代码的,那么我在cpp和h上改是徒然的。

显然只能直接在ui上改,但是在图形界面上又找不到对应的东西。。。
离线dbzhang800

只看该作者 6楼 发表于: 2009-09-01
引用第5楼iiiyyyhhhsss于2009-09-01 18:01发表的  :
但是有一点是肯定的,无论我怎么改.cpp和.h,工程更新后,cpp和h总是根据ui来重新载入代码的,那么我在cpp和h上改是徒然的。
显然只能直接在ui上改,但是在图形界面上又找不到对应的东西。。。
.......


说实话,你的看法完全错误
离线iiiyyyhhhsss

只看该作者 7楼 发表于: 2009-09-01
难道不是这样?我再试试看。。
离线iiiyyyhhhsss

只看该作者 8楼 发表于: 2009-09-01
的确是这样啊,手动更改moc_*.cpp和ui_*.h后,更新工程后,又变回原来的内容了,更改的内容全部丢失。。。。这是怎么回事?
离线iiiyyyhhhsss

只看该作者 9楼 发表于: 2009-09-01
你修改后的代码能够保留下来吗?你是如何修改的?你的工程目录里有哪些文件呢?
离线dbzhang800

只看该作者 10楼 发表于: 2009-09-01
最简单也最典型的Qt的程序,一般都有这个几个文件吧?

xxx.pro
main.cpp
xxxxxxxxx.h
xxxxxxxxx.cpp
xxxxxxxxx.ui

所有qt designer 不容易实现或不好实现或者其他困难的东西,你都要考虑 xxxxxxxxxx.h和xxxxxxxxxxx.cpp
离线iiiyyyhhhsss

只看该作者 11楼 发表于: 2009-09-01
那我想问问,如果你ui文件里有一个窗体A放在了位置C,同时,如果你通过写代码把窗体B也放在了位置C,那么位置C出现的到底是A还是B呢?
离线iiiyyyhhhsss

只看该作者 12楼 发表于: 2009-09-02
我创建了一个工程后,添加了一个TabWidget类的ui后,工程里就会出现以下文件,即每次生成ui文件,都会总共产生5个文件,我研究过他的组成结构,发现

*.ui和moc_*.cpp以及ui_*.h是对应的,每次更改*.ui后,moc_*.cpp和ui_*.h都会自动更新,看来这两个是*.ui自动生成的代码,是*.ui这个界面对应的界面类,是不能手动更改的,只能在*.ui里更改界面内容

而*.cpp和*.h是修改不了界面内容的,他主要实现的是这个界面要实现的功能,而不是界面的实现。。。

之前好像是dbzhang800说界面和功能实现是分开写的,看来他用的就是这种结构,也就是说,我的主界面只能在*.ui里修改啊,如何在代码里修改?
[ 此帖被iiiyyyhhhsss在2009-09-02 08:12重新编辑 ]
离线iiiyyyhhhsss

只看该作者 13楼 发表于: 2009-09-02
还有就是,这个标签栏右边那个+的按钮,即如何添加新的标签页是如何添加上去的?我在designer里的property里找不到,而在代码

里如何修改我又不懂,因为根本我根本实现不了在代码里修改东西。。。。修改的东西每次都被覆盖。。。
离线dbzhang800

只看该作者 14楼 发表于: 2009-09-02
引用第12楼iiiyyyhhhsss于2009-09-02 08:03发表的  :
而*.cpp和*.h是修改不了界面内容的,他主要实现的是这个界面要实现的功能,而不是界面的实现。。。
我的主界面只能在*.ui里修改啊,如何在代码里修改?
.......


*cpp和*.h完全可以控制你的界面的实现,可以添加、删除、修改GUI部件
离线iiiyyyhhhsss

只看该作者 15楼 发表于: 2009-09-02
但是如果你ui文件里有一个窗体A放在了位置C,同时,如果你通过写代码把窗体B也放在了位置C,那么位置C出现的到底是A还是B呢?

我还是不能理解。。。。
离线dbzhang800

只看该作者 16楼 发表于: 2009-09-02
引用第13楼iiiyyyhhhsss于2009-09-02 08:09发表的  :
还有就是,这个标签栏右边那个+的按钮,即如何添加新的标签页是如何添加上去的?我在designer里的property里找不到


这个我也找不到,这个东西Qt标准库中似乎还不存在。当你需要非标准控件时,最简单直接的方法,找一个类似的控件,然后子类化。也就是自定义控件。

引用第13楼iiiyyyhhhsss于2009-09-02 08:09发表的  :,而在代码

里如何修改我又不懂,因为根本我根本实现不了在代码里修改东西。。。。修改的东西每次都被覆盖。。。


这个不多说了:不要修改自动生成的中间产物,修改你的类的实现(****.h, ****.cpp)
离线iiiyyyhhhsss

只看该作者 17楼 发表于: 2009-09-02
我的意思是说,如果ui文件和代码编写冲突时,它会如何处理,是以代码编写为准吗?因为我感觉ui的界面会受cpp和h控制。。。
我试试看

还有就是知道那个+的按钮如何实现,我查过QTabWidget里最后可能与之联系的默过于addTabs   和insertTab  那两个函数了,不过我用过后都不成功。。。。到底如何用呢?
离线iiiyyyhhhsss

只看该作者 18楼 发表于: 2009-09-02
呵呵,我倒是想试一下那个自定义控件,这是如何做的?
离线iiiyyyhhhsss

只看该作者 19楼 发表于: 2009-09-02
我还没有试过这样做过,可以给个例子或类似这样的教程吗?
离线iiiyyyhhhsss

只看该作者 20楼 发表于: 2009-09-02
做自定义控件是否很复杂,如果不复杂,可否帮我简单的实现一下那个标签栏的+按钮,让我学习学习。。。。
快速回复
限100 字节
 
上一个 下一个