• 25556阅读
  • 49回复

Qt编写通用顶部导航源码 [复制链接]

上一主题 下一主题
离线liudianwu
 

图酷模式  只看楼主 正序阅读 楼主  发表于: 2017-10-22
懒得说废话,直接上图上源码

最新源码V20171023 在这里下载 uidemo01.zip (292 K) 下载次数:2406
29条评分好评度+7贡献值+6金钱+20威望+6
20210104 好评度 +1 - 2021-01-15
20210104 贡献值 +1 - 2021-01-15
20210104 威望 +1 - 2021-01-15
20210104 金钱 +1 - 2021-01-15
王然琴 好评度 +1 - 2019-12-06
jollapple 好评度 +1 - 2019-08-24
jollapple 金钱 +1 - 2019-08-24
fanzongsao 好评度 +1 - 2019-08-05
fanzongsao 贡献值 +1 - 2019-08-05
fanzongsao 威望 +1 - 2019-08-05
欢迎关注微信公众号:Qt实战/Qt入门和进阶(各种开源作品、经验整理、项目实战技巧,专注Qt/C++软件开发,视频监控、物联网、工业控制、嵌入式软件、国产化系统应用软件开发) QQ:517216493  WX:feiyangqingyun  QQ群:751439350
离线fealee

只看该作者 49楼 发表于: 2021-12-07
谢谢

离线rootbook

只看该作者 48楼 发表于: 2021-08-12
作为一个界面布局跟渲染是一个很好的学习例子
离线iamtsl

只看该作者 47楼 发表于: 2021-04-12
感谢。。。。下下来学习了~!
离线benn6821

只看该作者 46楼 发表于: 2021-03-12
感谢分享!!!!
离线mountainhigh

只看该作者 45楼 发表于: 2021-02-09
真的很感谢分享的楼主
离线18921600177

只看该作者 44楼 发表于: 2021-01-08
这个界面挺简约的,非常棒。刘大神厉害了!!!!
离线ncience

只看该作者 43楼 发表于: 2020-11-12
下不了呀,刘大师能不能受累发下邮箱 925058631@qq.com 谢谢大师拉
离线papabbb

只看该作者 42楼 发表于: 2020-06-30
为什么我下载了解压失败呢?资源出问题了吗?
离线xiaokelecc

只看该作者 41楼 发表于: 2020-06-19
非常感谢分享
离线luoshangying

只看该作者 40楼 发表于: 2020-03-31
您好,我下载的压缩包大小只有4kb。
离线xt1505

只看该作者 39楼 发表于: 2019-09-14
非常感谢,学习了
离线171887239

只看该作者 38楼 发表于: 2019-07-29
离线liuyuanan

只看该作者 37楼 发表于: 2018-05-26
  
离线xue6_xi6

只看该作者 36楼 发表于: 2018-04-02
非常感谢楼主的分享!!!
离线rock1411

只看该作者 35楼 发表于: 2018-03-05
谢谢楼主分享,学习了
离线kuainq

只看该作者 34楼 发表于: 2018-03-05
值得借鉴,支持!
离线新垣结衣

只看该作者 33楼 发表于: 2018-01-17
真的很感谢分享的楼主~~~感谢感谢
离线核心科技

只看该作者 32楼 发表于: 2018-01-14
我用纯代码终于实现了,后续功能还要丰富一下。等做好了拿出来分享一下。
离线petrelli1112

只看该作者 31楼 发表于: 2018-01-12
离线核心科技

只看该作者 30楼 发表于: 2018-01-11
这两天我在用纯代码实现该功能,因水平问题,遇到好多问题,感觉心好累啊。
离线一只小鱼

只看该作者 29楼 发表于: 2018-01-11
学习了,刘大师
离线vitty1984

只看该作者 28楼 发表于: 2017-12-15
点击最小化按钮,好像不起作用
离线victoire

只看该作者 27楼 发表于: 2017-11-17
很好的呢,借鉴下
离线liudianwu

只看该作者 26楼 发表于: 2017-11-08
回 icemen 的帖子
icemen:
有个BUG,建议 UIDemo01::buttonClick() 中的 b->text(); 改成
b->objectName();
否则换肤及换语言时无法执行换页。
void UIDemo01::buttonClick(){    QToolButton *b = (QToolButton *)sender();    QString name = b->objectName();            //b->text();
.......

那只是举例而已,其实我的真实用法是一行代码。
ui->stackedWidget->setCurrentIndex(btns.indexOf(b));
欢迎关注微信公众号:Qt实战/Qt入门和进阶(各种开源作品、经验整理、项目实战技巧,专注Qt/C++软件开发,视频监控、物联网、工业控制、嵌入式软件、国产化系统应用软件开发) QQ:517216493  WX:feiyangqingyun  QQ群:751439350
离线liudianwu

只看该作者 25楼 发表于: 2017-11-07
回 wjjontheway 的帖子
wjjontheway:刚看了下setProperty(),
"If the property is not defined using Q_PROPERTY, and therefore not listed in the meta-object, it is added as a dynamic property and false is returned."
所以这里的"form",“nav”都是自己添加的一种动态属性对吗 (2017-11-06 22:51) 

是的,你也可以写成this->setProperty("niubi", true);
能移动无边框是因为在appinit类中定义了!安装了全局事件过滤器。
欢迎关注微信公众号:Qt实战/Qt入门和进阶(各种开源作品、经验整理、项目实战技巧,专注Qt/C++软件开发,视频监控、物联网、工业控制、嵌入式软件、国产化系统应用软件开发) QQ:517216493  WX:feiyangqingyun  QQ群:751439350
离线wjjontheway

只看该作者 24楼 发表于: 2017-11-06
刚看了下setProperty(),
"If the property is not defined using Q_PROPERTY, and therefore not listed in the meta-object, it is added as a dynamic property and false is returned."
所以这里的"form",“nav”都是自己添加的一种动态属性对吗
离线wjjontheway

只看该作者 23楼 发表于: 2017-11-06
刘大师,我是新手,最近在学习界面设计,看了您的代码,想请教下两个问题:
1.UIDemo01.cpp里面对“form”,和“canMove”属性进行设置
this->setProperty("form", true);
this->setProperty("canMove", true);
UIDemo01集成QDialog,我在QDialog的属性列表里面没有找到这两个属性,在QWidget和QObject里面也没有找到。请问这两个是自定义的还是什么,困惑。
2.另外一个就是psblack.css中的样式表语句中也提到了类似[form="bottom"]的选择器,还有[nav="top"]选择器中的“nav”属性,这是在哪个类的属性呢?
离线icemen

只看该作者 22楼 发表于: 2017-11-06
有个BUG,建议 UIDemo01::buttonClick() 中的 b->text(); 改成
b->objectName();
否则换肤及换语言时无法执行换页。

void UIDemo01::buttonClick(){    QToolButton *b = (QToolButton *)sender();    QString name = b->objectName();            //b->text();
    QList<QToolButton *> tbtns = ui->widgetTop->findChildren<QToolButton *>();    foreach (QToolButton *btn, tbtns) {        if (btn == b) {            btn->setChecked(true);        } else {            btn->setChecked(false);        }    }
    if (name == "btnMain") {        ui->stackedWidget->setCurrentIndex(0);    } else if (name == "btnConfig") {        ui->stackedWidget->setCurrentIndex(1);    } else if (name == "btnData") {        ui->stackedWidget->setCurrentIndex(2);    } else if (name == "btnHelp") {        ui->stackedWidget->setCurrentIndex(3);    } else if (name == "btnExit") {        exit(0);    }}
离线lengji22

只看该作者 21楼 发表于: 2017-10-30
大神,膜拜
离线joeaaron

只看该作者 20楼 发表于: 2017-10-30
刘大师,我在顶部导航栏加入QComboBox为何起不了作用?
离线twodiamond

只看该作者 19楼 发表于: 2017-10-28
多谢刘工
离线liudianwu

只看该作者 18楼 发表于: 2017-10-27
回 twodiamond 的帖子
twodiamond:一直很崇拜刘工的举重若轻,以前研究过刘工的ECS工程(基于九宫格的图标页面),这个是基于 QStackedWidget 的,有问题想要请教:
1、在这个工程的AppInit::Instance函数中,QMutex的作用是什么?
AppInit *AppInit::Instance()
{
....... (2017-10-25 10:04) 

QMutex锁住,就可以防止多线程调用此函数造成多次实例化。
QStackedWidget 每次new之后,都分配了一个内存给该窗体,应该可以理解为硬copy
欢迎关注微信公众号:Qt实战/Qt入门和进阶(各种开源作品、经验整理、项目实战技巧,专注Qt/C++软件开发,视频监控、物联网、工业控制、嵌入式软件、国产化系统应用软件开发) QQ:517216493  WX:feiyangqingyun  QQ群:751439350
离线thematic971

只看该作者 17楼 发表于: 2017-10-27
学习了 感谢分享
离线twodiamond

只看该作者 16楼 发表于: 2017-10-25
一直很崇拜刘工的举重若轻,以前研究过刘工的ECS工程(基于九宫格的图标页面),这个是基于 QStackedWidget 的,有问题想要请教:
1、在这个工程的AppInit::Instance函数中,QMutex的作用是什么?

AppInit *AppInit::Instance()
{
    if (!self) {
        QMutex mutex;
        QMutexLocker locker(&mutex);
        if (!self) {
            self = new AppInit;
        }
    }
    return self;
}

2、QStackedWidget 的addWidget是否为硬copy?
QWidget *widget1 = new QWidget();

QWidget *widget2 = new QWidget();

QWidget *widget2 = new QWidget();

QStackedWidget *pWidgets;

pStackPage->addWidget(widget1 );

pStackPage->addWidget(widget2 );

pStackPage->addWidget(widget2 );

在此处,QStackedWidget  还是只象 QListWidget 一样,仅仅是一个指针入栈呢?

谢谢!

离线rekols

只看该作者 15楼 发表于: 2017-10-24
这玩意很容易实现。
离线九重水

只看该作者 14楼 发表于: 2017-10-24
sizeGripEnabled这个变量在QDialog是什么时候引入的?
以前用QWidget类的时候,在四个角还有四条边拉伸窗口的时候还不是很容易玩。
不过用QDialog的这个设置,好像也只能在角落里玩玩,边上就没得玩了。
离线cycloveu

只看该作者 13楼 发表于: 2017-10-24
    
大道至简 悟在天成
离线w642833823

只看该作者 12楼 发表于: 2017-10-24
大师制造非同凡响,辛苦了
离线hp_201111

只看该作者 11楼 发表于: 2017-10-23
        
快速回复
限100 字节
 
上一个 下一个