• 10674阅读
  • 18回复

一个简单的界面布局程序,你可以从这里学到很多 [复制链接]

上一主题 下一主题
离线feipeng1985
 

图酷模式  只看楼主 倒序阅读 楼主  发表于: 2016-12-04
帮朋友写的一个demo,这里开源一下,通过这个demo,你可以学到以下内容:
       1.如何写Pro文件,这里通过手写pro文件,实现了一个完整项目的管理,包括一个共享库及一个应用程序调用该共享库,如何打印pro文件所处的文件路径,在一个工程项目中对所有的子项目文件进行路径统一,对debug和release进行分别处理,在debug编译的文件后加后缀_d, 如何把编译后的文件统一移动到一个对应的文件夹下,pro文件中有大量注释。
  2.怎样使用单例方式进行一个程序的管理,减少信号和槽的连接。
  3.布局管理器如何布局出这样的界面
4.文件下载文件 MainMenuDemo.rar (35 K) 下载次数:360


9条评分好评度+2贡献值+2金钱+30威望+2
liyingchun 好评度 +1 分享精神,值得看看 2016-12-05
liyingchun 贡献值 +1 分享精神,值得看看 2016-12-05
liyingchun 威望 +1 分享精神,值得看看 2016-12-05
liyingchun 金钱 +10 分享精神,值得看看 2016-12-05
harold00124 金钱 +10 - 2016-12-05
closecpp 好评度 +1 楼主厉害啊,精华 2016-12-04
closecpp 贡献值 +1 楼主厉害啊,精华 2016-12-04
closecpp 威望 +1 楼主厉害啊,精华 2016-12-04
closecpp 金钱 +10 楼主厉害啊,精华 2016-12-04
离线liudianwu

只看该作者 置顶 (来自8楼) 发表于: 2016-12-05
— (圣域天子) 执行 帖内置顶 操作 (2016-12-06 15:48) —
qt黑科技:
1:编译前复制文件
    src_file = $$PWD/py.db
    dst_file = $$OUT_PWD/bin/py.db    
win32 {
    src_file ~= s,/,\\,g
    dst_file ~= s,/,\\,g    
    #system(copy /y $$src_file $$dst_file)
}
unix {
    system(cp -r -f $$src_file $$dst_file)
}

2:编译完成后复制文件
    src_file = $$PWD/file/*.*
    dst_file = $$OUT_PWD/bin/
win32 {
    src_file ~= s,/,\\,g
    dst_file ~= s,/,\\,g
    QMAKE_POST_LINK += copy $$src_file $$dst_file
}
unix {
    QMAKE_POST_LINK += cp -r -f $$src_file $$dst_file
}

3:根据qt版本号加载子项目
#判断当前qt版本号
QT_VERSION = $$[QT_VERSION]
QT_VERSION = $$split(QT_VERSION, ".")
QT_VER_MAJ = $$member(QT_VERSION, 0)
QT_VER_MIN = $$member(QT_VERSION, 1)

message(qt version: $$QT_VERSION)

#用到了webkit内核,在5.5以上版本移除该子项目
greaterThan(QT_VER_MAJ, 4){
    greaterThan(QT_VER_MIN, 4){
        SUBDIRS -= map
        SUBDIRS -= webkit
    }
}

4:pro指定编译前执行和编译后执行动作
编译前执行
QMAKE_PRE_LINK = cp - f  [source] [destionation]
编译后执行
QMAKE_POST_LINK = cp - f [source] [destination]
多条命令
QMAKE_POST_LINK += copy References\*.dll  Debug\ &
QMAKE_POST_LINK += copy References\*.dll ..\bin\ &
QMAKE_POST_LINK += copy Debug\*.exe ..\bin\

5:pro指定编译文件目录
MOC_DIR             = temp/moc
RCC_DIR             = temp/rcc
UI_DIR              = temp/ui
OBJECTS_DIR         = temp/obj
DESTDIR             = bin
欢迎关注微信公众号:Qt实战/Qt入门和进阶(各种开源作品、经验整理、项目实战技巧,专注Qt/C++软件开发,视频监控、物联网、工业控制、嵌入式软件、国产化系统应用软件开发) QQ:517216493  WX:feiyangqingyun  QQ群:751439350
离线liudianwu

只看该作者 1楼 发表于: 2016-12-04
做的挺好,解释的很到位!
顺便加一个,pro文件中这样写可以在编译的时候将源码下的文件拷贝到可执行文件同一目录。
win32 {
    src_file = $$PWD\\py.db
    dst_file = $$OUT_PWD\\bin\\py.db
    src_file ~= s,/,\\,g
    dst_file ~= s,/,\\,g
    system(copy /y $$src_file $$dst_file)
}

unix {
    src_file = $$PWD/py.db
    dst_file = $$OUT_PWD/bin/py.db
    system(cp -r -f $$src_file $$dst_file)
}
欢迎关注微信公众号:Qt实战/Qt入门和进阶(各种开源作品、经验整理、项目实战技巧,专注Qt/C++软件开发,视频监控、物联网、工业控制、嵌入式软件、国产化系统应用软件开发) QQ:517216493  WX:feiyangqingyun  QQ群:751439350
离线richards

只看该作者 2楼 发表于: 2016-12-04
不错 pro 文件还有些奇葩用法 各位大神在说说常用的有哪些
离线harold00124

只看该作者 3楼 发表于: 2016-12-05
感謝大大的分享
小弟剛學一個月 向您學習
离线xiaoyuq1t

只看该作者 4楼 发表于: 2016-12-05
学习学习,谢谢分享。

只看该作者 5楼 发表于: 2016-12-05
不错,pro 的详细写法建议多看 qmake 的变量和函数。
博客地址:https://waleon.blog.csdn.net
微信公众号:高效程序员
QQ 群:242790253
微信群:加微信(iwaleon),邀请入群。

承接各种 C++/Qt/QML 项目,专业的团队,一流的服务,不二的选择!
离线return

只看该作者 6楼 发表于: 2016-12-05
   感谢分享
离线liyingchun

只看该作者 7楼 发表于: 2016-12-05
并不是每个大牛都喜欢分享好东西的,所说必须支持
离线liudianwu

只看该作者 8楼 发表于: 2016-12-05
— (圣域天子) 执行 帖内置顶 操作 (2016-12-06 15:48) —
qt黑科技:
1:编译前复制文件
    src_file = $$PWD/py.db
    dst_file = $$OUT_PWD/bin/py.db    
win32 {
    src_file ~= s,/,\\,g
    dst_file ~= s,/,\\,g    
    #system(copy /y $$src_file $$dst_file)
}
unix {
    system(cp -r -f $$src_file $$dst_file)
}

2:编译完成后复制文件
    src_file = $$PWD/file/*.*
    dst_file = $$OUT_PWD/bin/
win32 {
    src_file ~= s,/,\\,g
    dst_file ~= s,/,\\,g
    QMAKE_POST_LINK += copy $$src_file $$dst_file
}
unix {
    QMAKE_POST_LINK += cp -r -f $$src_file $$dst_file
}

3:根据qt版本号加载子项目
#判断当前qt版本号
QT_VERSION = $$[QT_VERSION]
QT_VERSION = $$split(QT_VERSION, ".")
QT_VER_MAJ = $$member(QT_VERSION, 0)
QT_VER_MIN = $$member(QT_VERSION, 1)

message(qt version: $$QT_VERSION)

#用到了webkit内核,在5.5以上版本移除该子项目
greaterThan(QT_VER_MAJ, 4){
    greaterThan(QT_VER_MIN, 4){
        SUBDIRS -= map
        SUBDIRS -= webkit
    }
}

4:pro指定编译前执行和编译后执行动作
编译前执行
QMAKE_PRE_LINK = cp - f  [source] [destionation]
编译后执行
QMAKE_POST_LINK = cp - f [source] [destination]
多条命令
QMAKE_POST_LINK += copy References\*.dll  Debug\ &
QMAKE_POST_LINK += copy References\*.dll ..\bin\ &
QMAKE_POST_LINK += copy Debug\*.exe ..\bin\

5:pro指定编译文件目录
MOC_DIR             = temp/moc
RCC_DIR             = temp/rcc
UI_DIR              = temp/ui
OBJECTS_DIR         = temp/obj
DESTDIR             = bin
欢迎关注微信公众号:Qt实战/Qt入门和进阶(各种开源作品、经验整理、项目实战技巧,专注Qt/C++软件开发,视频监控、物联网、工业控制、嵌入式软件、国产化系统应用软件开发) QQ:517216493  WX:feiyangqingyun  QQ群:751439350
离线zjmmlab

只看该作者 9楼 发表于: 2016-12-06
    
离线霜叶红林

只看该作者 10楼 发表于: 2016-12-06
    
离线xiongyingeng

只看该作者 11楼 发表于: 2016-12-06
    
离线zhuifengwy

只看该作者 12楼 发表于: 2016-12-07
离线ailangzhou

只看该作者 13楼 发表于: 2016-12-07
很好
离线hunda

只看该作者 14楼 发表于: 2017-01-16
  很好很好很好很好很好很好
离线disongshu

只看该作者 15楼 发表于: 2017-01-16
    
离线panfan

只看该作者 16楼 发表于: 2017-01-18
      
博观而约取,厚积而薄发
离线return

只看该作者 17楼 发表于: 2017-01-19
    
离线pclogic

只看该作者 18楼 发表于: 2017-01-22
学习学习,谢谢分享。
快速回复
限100 字节
 
上一个 下一个