├── .gitignore ├── QRibbon ├── .gitignore ├── GeneratedFiles │ └── qrc_qribbon.cpp ├── LICENSE ├── QRibbon.pro ├── QRibbon.pro.user ├── QRibbon.pro.user.18 ├── QRibbon.pro.user.5cf5531 ├── QRibbon.sdf ├── QRibbon.sln ├── QRibbon.suo ├── QRibbon.vcxproj ├── QRibbon.vcxproj.filters ├── QRibbon.vcxproj.user ├── QRibbonDetails.svg ├── README.md ├── RibbonPoint.svg ├── RibbonUp.svg ├── main.cpp ├── memorycheck.bat ├── qribbon.cpp ├── qribbon.h ├── qribbon.qrc ├── qribbon_global.h ├── qribbonbutton.cpp ├── qribbonbutton.h ├── qribbonsection.cpp ├── qribbonsection.h ├── qribbontest.cpp ├── qribbontest.h └── test.svg ├── QtGuiApplication1.sln ├── QtGuiApplication1 ├── QtGuiApplication1.qrc ├── QtGuiApplication1.ui ├── QtGuiApplication1.vcxproj ├── QtGuiApplication1.vcxproj.filters ├── QtGuiApplication1.vcxproj.user ├── Resources │ └── menu │ │ ├── cloudact.png │ │ ├── createLayeract.png │ │ ├── googlemapact.png │ │ ├── loadLayeract.png │ │ ├── loadTerrainact.png │ │ ├── onlineact.png │ │ └── settingact.png ├── main.cpp ├── qribbonMainwindow.cpp └── qribbonMainwindow.h ├── README.md └── screenshot └── mainwindow.png /.gitignore: -------------------------------------------------------------------------------- 1 | QtGuiApplication1/GeneratedFiles/ 2 | QRibbon/x64/ 3 | QtGuiApplication1/x64/ 4 | QRibbon/project/test/ 5 | bin/ 6 | auxiliary/ 7 | QRibbon/ipch/ 8 | lib/ 9 | QRibbon/debug/ 10 | .vs/ 11 | -------------------------------------------------------------------------------- /QRibbon/.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled Object files 2 | *.slo 3 | *.lo 4 | *.o 5 | *.obj 6 | 7 | # Precompiled Headers 8 | *.gch 9 | *.pch 10 | 11 | # Compiled Dynamic libraries 12 | *.so 13 | *.dylib 14 | *.dll 15 | 16 | # Fortran module files 17 | *.mod 18 | 19 | # Compiled Static libraries 20 | *.lai 21 | *.la 22 | *.a 23 | *.lib 24 | 25 | # Executables 26 | *.exe 27 | *.out 28 | *.app 29 | -------------------------------------------------------------------------------- /QRibbon/LICENSE: -------------------------------------------------------------------------------- 1 | GNU LESSER GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | 9 | This version of the GNU Lesser General Public License incorporates 10 | the terms and conditions of version 3 of the GNU General Public 11 | License, supplemented by the additional permissions listed below. 12 | 13 | 0. Additional Definitions. 14 | 15 | As used herein, "this License" refers to version 3 of the GNU Lesser 16 | General Public License, and the "GNU GPL" refers to version 3 of the GNU 17 | General Public License. 18 | 19 | "The Library" refers to a covered work governed by this License, 20 | other than an Application or a Combined Work as defined below. 21 | 22 | An "Application" is any work that makes use of an interface provided 23 | by the Library, but which is not otherwise based on the Library. 24 | Defining a subclass of a class defined by the Library is deemed a mode 25 | of using an interface provided by the Library. 26 | 27 | A "Combined Work" is a work produced by combining or linking an 28 | Application with the Library. The particular version of the Library 29 | with which the Combined Work was made is also called the "Linked 30 | Version". 31 | 32 | The "Minimal Corresponding Source" for a Combined Work means the 33 | Corresponding Source for the Combined Work, excluding any source code 34 | for portions of the Combined Work that, considered in isolation, are 35 | based on the Application, and not on the Linked Version. 36 | 37 | The "Corresponding Application Code" for a Combined Work means the 38 | object code and/or source code for the Application, including any data 39 | and utility programs needed for reproducing the Combined Work from the 40 | Application, but excluding the System Libraries of the Combined Work. 41 | 42 | 1. Exception to Section 3 of the GNU GPL. 43 | 44 | You may convey a covered work under sections 3 and 4 of this License 45 | without being bound by section 3 of the GNU GPL. 46 | 47 | 2. Conveying Modified Versions. 48 | 49 | If you modify a copy of the Library, and, in your modifications, a 50 | facility refers to a function or data to be supplied by an Application 51 | that uses the facility (other than as an argument passed when the 52 | facility is invoked), then you may convey a copy of the modified 53 | version: 54 | 55 | a) under this License, provided that you make a good faith effort to 56 | ensure that, in the event an Application does not supply the 57 | function or data, the facility still operates, and performs 58 | whatever part of its purpose remains meaningful, or 59 | 60 | b) under the GNU GPL, with none of the additional permissions of 61 | this License applicable to that copy. 62 | 63 | 3. Object Code Incorporating Material from Library Header Files. 64 | 65 | The object code form of an Application may incorporate material from 66 | a header file that is part of the Library. You may convey such object 67 | code under terms of your choice, provided that, if the incorporated 68 | material is not limited to numerical parameters, data structure 69 | layouts and accessors, or small macros, inline functions and templates 70 | (ten or fewer lines in length), you do both of the following: 71 | 72 | a) Give prominent notice with each copy of the object code that the 73 | Library is used in it and that the Library and its use are 74 | covered by this License. 75 | 76 | b) Accompany the object code with a copy of the GNU GPL and this license 77 | document. 78 | 79 | 4. Combined Works. 80 | 81 | You may convey a Combined Work under terms of your choice that, 82 | taken together, effectively do not restrict modification of the 83 | portions of the Library contained in the Combined Work and reverse 84 | engineering for debugging such modifications, if you also do each of 85 | the following: 86 | 87 | a) Give prominent notice with each copy of the Combined Work that 88 | the Library is used in it and that the Library and its use are 89 | covered by this License. 90 | 91 | b) Accompany the Combined Work with a copy of the GNU GPL and this license 92 | document. 93 | 94 | c) For a Combined Work that displays copyright notices during 95 | execution, include the copyright notice for the Library among 96 | these notices, as well as a reference directing the user to the 97 | copies of the GNU GPL and this license document. 98 | 99 | d) Do one of the following: 100 | 101 | 0) Convey the Minimal Corresponding Source under the terms of this 102 | License, and the Corresponding Application Code in a form 103 | suitable for, and under terms that permit, the user to 104 | recombine or relink the Application with a modified version of 105 | the Linked Version to produce a modified Combined Work, in the 106 | manner specified by section 6 of the GNU GPL for conveying 107 | Corresponding Source. 108 | 109 | 1) Use a suitable shared library mechanism for linking with the 110 | Library. A suitable mechanism is one that (a) uses at run time 111 | a copy of the Library already present on the user's computer 112 | system, and (b) will operate properly with a modified version 113 | of the Library that is interface-compatible with the Linked 114 | Version. 115 | 116 | e) Provide Installation Information, but only if you would otherwise 117 | be required to provide such information under section 6 of the 118 | GNU GPL, and only to the extent that such information is 119 | necessary to install and execute a modified version of the 120 | Combined Work produced by recombining or relinking the 121 | Application with a modified version of the Linked Version. (If 122 | you use option 4d0, the Installation Information must accompany 123 | the Minimal Corresponding Source and Corresponding Application 124 | Code. If you use option 4d1, you must provide the Installation 125 | Information in the manner specified by section 6 of the GNU GPL 126 | for conveying Corresponding Source.) 127 | 128 | 5. Combined Libraries. 129 | 130 | You may place library facilities that are a work based on the 131 | Library side by side in a single library together with other library 132 | facilities that are not Applications and are not covered by this 133 | License, and convey such a combined library under terms of your 134 | choice, if you do both of the following: 135 | 136 | a) Accompany the combined library with a copy of the same work based 137 | on the Library, uncombined with any other library facilities, 138 | conveyed under the terms of this License. 139 | 140 | b) Give prominent notice with the combined library that part of it 141 | is a work based on the Library, and explaining where to find the 142 | accompanying uncombined form of the same work. 143 | 144 | 6. Revised Versions of the GNU Lesser General Public License. 145 | 146 | The Free Software Foundation may publish revised and/or new versions 147 | of the GNU Lesser General Public License from time to time. Such new 148 | versions will be similar in spirit to the present version, but may 149 | differ in detail to address new problems or concerns. 150 | 151 | Each version is given a distinguishing version number. If the 152 | Library as you received it specifies that a certain numbered version 153 | of the GNU Lesser General Public License "or any later version" 154 | applies to it, you have the option of following the terms and 155 | conditions either of that published version or of any later version 156 | published by the Free Software Foundation. If the Library as you 157 | received it does not specify a version number of the GNU Lesser 158 | General Public License, you may choose any version of the GNU Lesser 159 | General Public License ever published by the Free Software Foundation. 160 | 161 | If the Library as you received it specifies that a proxy can decide 162 | whether future versions of the GNU Lesser General Public License shall 163 | apply, that proxy's public statement of acceptance of any version is 164 | permanent authorization for you to choose that version for the 165 | Library. 166 | 167 | -------------------------------------------------------------------------------- /QRibbon/QRibbon.pro: -------------------------------------------------------------------------------- 1 | QT += widgets 2 | 3 | CONFIG(app) { 4 | warning(App config) 5 | 6 | QT += core gui 7 | 8 | TEMPLATE = app 9 | DEFINES += QRIBBON_TEST 10 | 11 | HEADERS = qribbon.h \ 12 | qribbon_global.h \ 13 | qribbontest.h \ 14 | qribbonsection.h \ 15 | qribbonbutton.h 16 | 17 | SOURCES = main.cpp \ 18 | qribbon.cpp \ 19 | qribbonsection.cpp \ 20 | qribbonbutton.cpp \ 21 | qribbontest.cpp 22 | 23 | INCLUDEPATH += "C:\Program Files (x86)\Visual Leak Detector\include" 24 | LIBS += -L"C:\Program Files (x86)\Visual Leak Detector\lib\win32" -lvld 25 | 26 | TARGET = qribbontest 27 | 28 | } else { 29 | warning(Lib config) 30 | 31 | CONFIG(installd) { 32 | TARGET = QRibbond 33 | } else { 34 | TARGET = QRibbon 35 | } 36 | 37 | TEMPLATE = lib 38 | DEFINES += QRIBBON_LIBRARY 39 | 40 | HEADERS = \ 41 | qribbon.h \ 42 | qribbon_global.h \ 43 | qribbonsection.h \ 44 | qribbonbutton.h \ 45 | 46 | SOURCES = \ 47 | qribbon.cpp \ 48 | qribbonsection.cpp \ 49 | qribbonbutton.cpp 50 | 51 | target.path = ../lib 52 | INSTALLS += target 53 | 54 | mylib.CONFIG = no_check_exists 55 | mylib.files = release/QRibbonPlugin.lib release/QRibbonPlugin.dll 56 | mylib.path =../lib 57 | INSTALLS += mylib 58 | 59 | warning($$INSTALLS) 60 | 61 | mylibd.CONFIG = no_check_exists 62 | mylibd.files = debug/QRibbonPlugind.lib debug/QRibbonPlugind.dll 63 | mylibd.path =../lib 64 | INSTALLS += mylibd 65 | 66 | 67 | DISTFILES += 68 | OTHER_FILES += 69 | 70 | header_files.files = $$HEADERS 71 | header_files.path = ../include 72 | INSTALLS += header_files 73 | 74 | warning($$INSTALLS) 75 | } 76 | 77 | RESOURCES += \ 78 | qribbon.qrc 79 | 80 | DISTFILES += \ 81 | memorycheck.bat \ 82 | LICENSE \ 83 | README.md 84 | 85 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /QRibbon/QRibbon.pro.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | ProjectExplorer.Project.ActiveTarget 7 | 0 8 | 9 | 10 | ProjectExplorer.Project.EditorSettings 11 | 12 | true 13 | false 14 | true 15 | 16 | Cpp 17 | 18 | CppGlobal 19 | 20 | 21 | 22 | QmlJS 23 | 24 | QmlJSGlobal 25 | 26 | 27 | 2 28 | UTF-8 29 | false 30 | 4 31 | false 32 | true 33 | 1 34 | true 35 | 0 36 | true 37 | 0 38 | 8 39 | true 40 | 1 41 | true 42 | true 43 | true 44 | false 45 | 46 | 47 | 48 | ProjectExplorer.Project.PluginSettings 49 | 50 | 51 | 52 | ProjectExplorer.Project.Target.0 53 | 54 | Desktop Qt 5.2.1 MSVC2010 32bit 55 | Desktop Qt 5.2.1 MSVC2010 32bit 56 | qt.521.win32_msvc2010.essentials_kit 57 | 2 58 | 0 59 | 0 60 | 61 | C:/Users/hans-lokaal/workspace/Qt/build-QRibbon-Desktop_Qt_5_2_1_MSVC2010_32bit-Debug 62 | 63 | 64 | true 65 | qmake 66 | 67 | QtProjectManager.QMakeBuildStep 68 | false 69 | true 70 | 71 | false 72 | 73 | 74 | true 75 | Make 76 | 77 | Qt4ProjectManager.MakeStep 78 | 79 | false 80 | 81 | 82 | 83 | 2 84 | Build 85 | 86 | ProjectExplorer.BuildSteps.Build 87 | 88 | 89 | 90 | true 91 | Make 92 | 93 | Qt4ProjectManager.MakeStep 94 | 95 | true 96 | clean 97 | 98 | 99 | 1 100 | Clean 101 | 102 | ProjectExplorer.BuildSteps.Clean 103 | 104 | 2 105 | false 106 | 107 | Debug 108 | 109 | Qt4ProjectManager.Qt4BuildConfiguration 110 | 2 111 | true 112 | 113 | 114 | C:/Users/hans-lokaal/workspace/Qt/build-QRibbon-Desktop_Qt_5_2_1_MSVC2010_32bit-Release 115 | 116 | 117 | true 118 | qmake 119 | 120 | QtProjectManager.QMakeBuildStep 121 | false 122 | true 123 | 124 | false 125 | 126 | 127 | true 128 | Make 129 | 130 | Qt4ProjectManager.MakeStep 131 | 132 | false 133 | 134 | 135 | 136 | 2 137 | Build 138 | 139 | ProjectExplorer.BuildSteps.Build 140 | 141 | 142 | 143 | true 144 | Make 145 | 146 | Qt4ProjectManager.MakeStep 147 | 148 | true 149 | clean 150 | 151 | 152 | 1 153 | Clean 154 | 155 | ProjectExplorer.BuildSteps.Clean 156 | 157 | 2 158 | false 159 | 160 | Release 161 | 162 | Qt4ProjectManager.Qt4BuildConfiguration 163 | 0 164 | true 165 | 166 | 167 | C:/Users/hans-lokaal/workspace/Qt/build-QRibbon-Desktop_Qt_5_2_1_MSVC2010_32bit-Debug 168 | 169 | 170 | true 171 | qmake 172 | 173 | QtProjectManager.QMakeBuildStep 174 | false 175 | true 176 | "CONFIG+=app" 177 | false 178 | 179 | 180 | true 181 | Make 182 | 183 | Qt4ProjectManager.MakeStep 184 | 185 | false 186 | 187 | 188 | 189 | 2 190 | Build 191 | 192 | ProjectExplorer.BuildSteps.Build 193 | 194 | 195 | 196 | true 197 | Make 198 | 199 | Qt4ProjectManager.MakeStep 200 | 201 | true 202 | clean 203 | 204 | 205 | 1 206 | Clean 207 | 208 | ProjectExplorer.BuildSteps.Clean 209 | 210 | 2 211 | false 212 | 213 | Debug 214 | App 215 | Qt4ProjectManager.Qt4BuildConfiguration 216 | 2 217 | true 218 | 219 | 220 | C:/Users/hans-lokaal/workspace/Qt/build-QRibbon-Desktop_Qt_5_2_1_MSVC2010_32bit-Debug 221 | 222 | 223 | true 224 | qmake 225 | 226 | QtProjectManager.QMakeBuildStep 227 | false 228 | true 229 | "CONFIG+=installd" 230 | false 231 | 232 | 233 | true 234 | Make 235 | 236 | Qt4ProjectManager.MakeStep 237 | 238 | false 239 | 240 | 241 | 242 | 2 243 | Build 244 | 245 | ProjectExplorer.BuildSteps.Build 246 | 247 | 248 | 249 | true 250 | Make 251 | 252 | Qt4ProjectManager.MakeStep 253 | 254 | true 255 | clean 256 | 257 | 258 | 1 259 | Clean 260 | 261 | ProjectExplorer.BuildSteps.Clean 262 | 263 | 2 264 | false 265 | 266 | Debug 267 | installd 268 | Qt4ProjectManager.Qt4BuildConfiguration 269 | 2 270 | true 271 | 272 | 4 273 | 274 | 275 | 0 276 | Deploy 277 | 278 | ProjectExplorer.BuildSteps.Deploy 279 | 280 | 1 281 | Deploy locally 282 | 283 | ProjectExplorer.DefaultDeployConfiguration 284 | 285 | 1 286 | 287 | 288 | 289 | false 290 | false 291 | false 292 | false 293 | true 294 | 0.01 295 | 10 296 | true 297 | 1 298 | 25 299 | 300 | 1 301 | true 302 | false 303 | true 304 | valgrind 305 | 306 | 0 307 | 1 308 | 2 309 | 3 310 | 4 311 | 5 312 | 6 313 | 7 314 | 8 315 | 9 316 | 10 317 | 11 318 | 12 319 | 13 320 | 14 321 | 322 | 2 323 | 324 | QRibbon 325 | 326 | Qt4ProjectManager.Qt4RunConfiguration:C:/Users/hans-lokaal/workspace/Qt/QRibbon/QRibbon.pro 327 | 328 | QRibbon.pro 329 | false 330 | false 331 | 332 | 3768 333 | true 334 | false 335 | false 336 | false 337 | true 338 | 339 | 1 340 | 341 | 342 | 343 | ProjectExplorer.Project.TargetCount 344 | 1 345 | 346 | 347 | ProjectExplorer.Project.Updater.EnvironmentId 348 | {dc7d42c1-cc3e-4936-96b2-722dea22f78b} 349 | 350 | 351 | ProjectExplorer.Project.Updater.FileVersion 352 | 15 353 | 354 | 355 | -------------------------------------------------------------------------------- /QRibbon/QRibbon.pro.user.18: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | EnvironmentId 7 | {dc7d42c1-cc3e-4936-96b2-722dea22f78b} 8 | 9 | 10 | ProjectExplorer.Project.ActiveTarget 11 | 0 12 | 13 | 14 | ProjectExplorer.Project.EditorSettings 15 | 16 | true 17 | false 18 | true 19 | 20 | Cpp 21 | 22 | CppGlobal 23 | 24 | 25 | 26 | QmlJS 27 | 28 | QmlJSGlobal 29 | 30 | 31 | 2 32 | UTF-8 33 | false 34 | 4 35 | false 36 | 80 37 | true 38 | true 39 | 1 40 | true 41 | false 42 | 0 43 | true 44 | 0 45 | 8 46 | true 47 | 1 48 | true 49 | true 50 | true 51 | false 52 | 53 | 54 | 55 | ProjectExplorer.Project.PluginSettings 56 | 57 | 58 | 59 | ProjectExplorer.Project.Target.0 60 | 61 | Desktop Qt 5.4.2 MSVC2013 32bit 62 | Desktop Qt 5.4.2 MSVC2013 32bit 63 | qt.54.win32_msvc2013_kit 64 | 2 65 | 0 66 | 0 67 | 68 | C:/Users/hans-lokaal/workspace/Qt/build-QRibbon-Desktop_Qt_5_4_2_MSVC2013_32bit-Debug 69 | 70 | 71 | true 72 | qmake 73 | 74 | QtProjectManager.QMakeBuildStep 75 | false 76 | true 77 | 78 | false 79 | false 80 | false 81 | 82 | 83 | true 84 | Make 85 | 86 | Qt4ProjectManager.MakeStep 87 | 88 | false 89 | 90 | 91 | 92 | 2 93 | Build 94 | 95 | ProjectExplorer.BuildSteps.Build 96 | 97 | 98 | 99 | true 100 | Make 101 | 102 | Qt4ProjectManager.MakeStep 103 | 104 | true 105 | clean 106 | 107 | 108 | 1 109 | Clean 110 | 111 | ProjectExplorer.BuildSteps.Clean 112 | 113 | 2 114 | false 115 | 116 | Debug 117 | 118 | Qt4ProjectManager.Qt4BuildConfiguration 119 | 2 120 | true 121 | 122 | 123 | C:/Users/hans-lokaal/workspace/Qt/build-QRibbon-Desktop_Qt_5_4_2_MSVC2013_32bit-Release 124 | 125 | 126 | true 127 | qmake 128 | 129 | QtProjectManager.QMakeBuildStep 130 | false 131 | true 132 | 133 | false 134 | false 135 | false 136 | 137 | 138 | true 139 | Make 140 | 141 | Qt4ProjectManager.MakeStep 142 | 143 | false 144 | 145 | 146 | 147 | 2 148 | Build 149 | 150 | ProjectExplorer.BuildSteps.Build 151 | 152 | 153 | 154 | true 155 | Make 156 | 157 | Qt4ProjectManager.MakeStep 158 | 159 | true 160 | clean 161 | 162 | 163 | 1 164 | Clean 165 | 166 | ProjectExplorer.BuildSteps.Clean 167 | 168 | 2 169 | false 170 | 171 | Release 172 | 173 | Qt4ProjectManager.Qt4BuildConfiguration 174 | 0 175 | true 176 | 177 | 178 | C:/Users/hans-lokaal/workspace/Qt/build-QRibbon-Desktop_Qt_5_4_2_MSVC2013_32bit-App 179 | 180 | 181 | true 182 | qmake 183 | 184 | QtProjectManager.QMakeBuildStep 185 | false 186 | true 187 | "CONFIG+=app" 188 | false 189 | false 190 | false 191 | 192 | 193 | true 194 | Make 195 | 196 | Qt4ProjectManager.MakeStep 197 | 198 | false 199 | 200 | 201 | 202 | 2 203 | Build 204 | 205 | ProjectExplorer.BuildSteps.Build 206 | 207 | 208 | 209 | true 210 | Make 211 | 212 | Qt4ProjectManager.MakeStep 213 | 214 | true 215 | clean 216 | 217 | 218 | 1 219 | Clean 220 | 221 | ProjectExplorer.BuildSteps.Clean 222 | 223 | 2 224 | false 225 | 226 | Debug 227 | App 228 | Qt4ProjectManager.Qt4BuildConfiguration 229 | 2 230 | true 231 | 232 | 3 233 | 234 | 235 | 0 236 | Deploy 237 | 238 | ProjectExplorer.BuildSteps.Deploy 239 | 240 | 1 241 | Deploy locally 242 | 243 | ProjectExplorer.DefaultDeployConfiguration 244 | 245 | 1 246 | 247 | 248 | 249 | false 250 | false 251 | false 252 | false 253 | true 254 | 0.01 255 | 10 256 | true 257 | 1 258 | 25 259 | 260 | 1 261 | true 262 | false 263 | true 264 | valgrind 265 | 266 | 0 267 | 1 268 | 2 269 | 3 270 | 4 271 | 5 272 | 6 273 | 7 274 | 8 275 | 9 276 | 10 277 | 11 278 | 12 279 | 13 280 | 14 281 | 282 | 2 283 | 284 | QRibbon 285 | 286 | Qt4ProjectManager.Qt4RunConfiguration:C:/Users/hans-lokaal/workspace/Qt/QRibbon/QRibbon.pro 287 | 288 | QRibbon.pro 289 | false 290 | false 291 | 292 | 3768 293 | false 294 | true 295 | false 296 | false 297 | true 298 | 299 | 1 300 | 301 | 302 | 303 | ProjectExplorer.Project.TargetCount 304 | 1 305 | 306 | 307 | ProjectExplorer.Project.Updater.FileVersion 308 | 18 309 | 310 | 311 | Version 312 | 18 313 | 314 | 315 | -------------------------------------------------------------------------------- /QRibbon/QRibbon.pro.user.5cf5531: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | EnvironmentId 7 | {5cf5531b-2336-46e3-945c-a10ed55f9d89} 8 | 9 | 10 | ProjectExplorer.Project.ActiveTarget 11 | 0 12 | 13 | 14 | ProjectExplorer.Project.EditorSettings 15 | 16 | true 17 | false 18 | true 19 | 20 | Cpp 21 | 22 | CppGlobal 23 | 24 | 25 | 26 | QmlJS 27 | 28 | QmlJSGlobal 29 | 30 | 31 | 2 32 | UTF-8 33 | false 34 | 4 35 | false 36 | 80 37 | true 38 | true 39 | 1 40 | true 41 | false 42 | 0 43 | true 44 | 0 45 | 8 46 | true 47 | 1 48 | true 49 | true 50 | true 51 | false 52 | 53 | 54 | 55 | ProjectExplorer.Project.PluginSettings 56 | 57 | 58 | 59 | ProjectExplorer.Project.Target.0 60 | 61 | Desktop Qt 5.4.1 MSVC2013 32bit 62 | Desktop Qt 5.4.1 MSVC2013 32bit 63 | qt.54.win32_msvc2013_kit 64 | 4 65 | 0 66 | 0 67 | 68 | C:/Users/hans/workspace/Qt/build-QRibbon-Desktop_Qt_5_4_1_MSVC2013_32bit-Debug 69 | 70 | 71 | true 72 | qmake 73 | 74 | QtProjectManager.QMakeBuildStep 75 | false 76 | true 77 | 78 | false 79 | false 80 | 81 | 82 | true 83 | Make 84 | 85 | Qt4ProjectManager.MakeStep 86 | 87 | false 88 | 89 | 90 | 91 | 2 92 | Build 93 | 94 | ProjectExplorer.BuildSteps.Build 95 | 96 | 97 | 98 | true 99 | Make 100 | 101 | Qt4ProjectManager.MakeStep 102 | 103 | true 104 | clean 105 | 106 | 107 | 1 108 | Clean 109 | 110 | ProjectExplorer.BuildSteps.Clean 111 | 112 | 2 113 | false 114 | 115 | Debug 116 | 117 | Qt4ProjectManager.Qt4BuildConfiguration 118 | 2 119 | true 120 | 121 | 122 | C:/Users/hans/workspace/Qt/build-QRibbon-Desktop_Qt_5_4_1_MSVC2013_32bit-Release 123 | 124 | 125 | true 126 | qmake 127 | 128 | QtProjectManager.QMakeBuildStep 129 | false 130 | true 131 | 132 | false 133 | false 134 | 135 | 136 | true 137 | Make 138 | 139 | Qt4ProjectManager.MakeStep 140 | 141 | false 142 | 143 | 144 | 145 | 2 146 | Build 147 | 148 | ProjectExplorer.BuildSteps.Build 149 | 150 | 151 | 152 | true 153 | Make 154 | 155 | Qt4ProjectManager.MakeStep 156 | 157 | true 158 | clean 159 | 160 | 161 | 1 162 | Clean 163 | 164 | ProjectExplorer.BuildSteps.Clean 165 | 166 | 2 167 | false 168 | 169 | Release 170 | 171 | Qt4ProjectManager.Qt4BuildConfiguration 172 | 0 173 | true 174 | 175 | 176 | C:/Users/hans/workspace/Qt/build-QRibbon-Desktop_Qt_5_4_1_MSVC2013_32bit-Debug 177 | 178 | 179 | true 180 | qmake 181 | 182 | QtProjectManager.QMakeBuildStep 183 | false 184 | true 185 | "CONFIG+=installd" 186 | false 187 | false 188 | 189 | 190 | true 191 | Make 192 | 193 | Qt4ProjectManager.MakeStep 194 | 195 | false 196 | 197 | 198 | 199 | 200 | true 201 | Make 202 | 203 | Qt4ProjectManager.MakeStep 204 | 205 | false 206 | install 207 | 208 | 209 | 3 210 | Build 211 | 212 | ProjectExplorer.BuildSteps.Build 213 | 214 | 215 | 216 | true 217 | Make 218 | 219 | Qt4ProjectManager.MakeStep 220 | 221 | true 222 | clean 223 | 224 | 225 | 1 226 | Clean 227 | 228 | ProjectExplorer.BuildSteps.Clean 229 | 230 | 2 231 | false 232 | 233 | Debug 234 | Installd 235 | Qt4ProjectManager.Qt4BuildConfiguration 236 | 2 237 | true 238 | 239 | 240 | C:/Users/hans/workspace/Qt/build-QRibbon-Desktop_Qt_5_4_1_MSVC2013_32bit-Release 241 | 242 | 243 | true 244 | qmake 245 | 246 | QtProjectManager.QMakeBuildStep 247 | false 248 | true 249 | 250 | false 251 | false 252 | 253 | 254 | true 255 | Make 256 | 257 | Qt4ProjectManager.MakeStep 258 | 259 | false 260 | 261 | 262 | 263 | 264 | true 265 | Make 266 | 267 | Qt4ProjectManager.MakeStep 268 | 269 | false 270 | install 271 | 272 | 273 | 3 274 | Build 275 | 276 | ProjectExplorer.BuildSteps.Build 277 | 278 | 279 | 280 | true 281 | Make 282 | 283 | Qt4ProjectManager.MakeStep 284 | 285 | true 286 | clean 287 | 288 | 289 | 1 290 | Clean 291 | 292 | ProjectExplorer.BuildSteps.Clean 293 | 294 | 2 295 | false 296 | 297 | Release 298 | Install 299 | Qt4ProjectManager.Qt4BuildConfiguration 300 | 0 301 | true 302 | 303 | 304 | C:/Users/hans/workspace/Qt/build-QRibbon-Desktop_Qt_5_4_1_MSVC2013_32bit-App 305 | 306 | 307 | true 308 | qmake 309 | 310 | QtProjectManager.QMakeBuildStep 311 | false 312 | true 313 | "CONFIG+=app" 314 | false 315 | false 316 | 317 | 318 | true 319 | Make 320 | 321 | Qt4ProjectManager.MakeStep 322 | 323 | false 324 | 325 | 326 | 327 | 2 328 | Build 329 | 330 | ProjectExplorer.BuildSteps.Build 331 | 332 | 333 | 334 | true 335 | Make 336 | 337 | Qt4ProjectManager.MakeStep 338 | 339 | true 340 | clean 341 | 342 | 343 | 1 344 | Clean 345 | 346 | ProjectExplorer.BuildSteps.Clean 347 | 348 | 2 349 | false 350 | 351 | Debug 352 | App 353 | Qt4ProjectManager.Qt4BuildConfiguration 354 | 2 355 | true 356 | 357 | 5 358 | 359 | 360 | 0 361 | Deploy 362 | 363 | ProjectExplorer.BuildSteps.Deploy 364 | 365 | 1 366 | Deploy locally 367 | 368 | ProjectExplorer.DefaultDeployConfiguration 369 | 370 | 1 371 | 372 | 373 | 374 | false 375 | false 376 | false 377 | false 378 | false 379 | 0.01 380 | 10 381 | true 382 | 1 383 | 25 384 | 385 | 0 386 | true 387 | false 388 | false 389 | drmemory 390 | 391 | 0 392 | 1 393 | 2 394 | 3 395 | 4 396 | 5 397 | 6 398 | 7 399 | 8 400 | 9 401 | 10 402 | 11 403 | 12 404 | 13 405 | 14 406 | 407 | 2 408 | 409 | QRibbon 410 | 411 | Qt4ProjectManager.Qt4RunConfiguration:C:/Users/hans/workspace/Qt/QRibbon/QRibbon.pro 412 | 413 | QRibbon.pro 414 | false 415 | false 416 | 417 | 3768 418 | false 419 | true 420 | false 421 | false 422 | true 423 | 424 | 1 425 | 426 | 427 | 428 | ProjectExplorer.Project.TargetCount 429 | 1 430 | 431 | 432 | ProjectExplorer.Project.Updater.FileVersion 433 | 18 434 | 435 | 436 | Version 437 | 18 438 | 439 | 440 | -------------------------------------------------------------------------------- /QRibbon/QRibbon.sdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/longyangzz/osgGisMap/ba47202eb226538dcbfe3192eba7ec12da3c1934/QRibbon/QRibbon.sdf -------------------------------------------------------------------------------- /QRibbon/QRibbon.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 11.00 3 | # Visual Studio 2010 4 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "QRibbon", "QRibbon.vcxproj", "{632BC80B-5D71-3F54-9965-F2F15991A9C4}" 5 | EndProject 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test", "project\test\test.vcxproj", "{92065202-AF5A-4946-815F-9C1BCF1DD621}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Win32 = Debug|Win32 11 | Debug|x64 = Debug|x64 12 | Release|Win32 = Release|Win32 13 | Release|x64 = Release|x64 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {632BC80B-5D71-3F54-9965-F2F15991A9C4}.Debug|Win32.ActiveCfg = Debug|x64 17 | {632BC80B-5D71-3F54-9965-F2F15991A9C4}.Debug|x64.ActiveCfg = Debug|x64 18 | {632BC80B-5D71-3F54-9965-F2F15991A9C4}.Debug|x64.Build.0 = Debug|x64 19 | {632BC80B-5D71-3F54-9965-F2F15991A9C4}.Release|Win32.ActiveCfg = Release|x64 20 | {632BC80B-5D71-3F54-9965-F2F15991A9C4}.Release|x64.ActiveCfg = Release|x64 21 | {632BC80B-5D71-3F54-9965-F2F15991A9C4}.Release|x64.Build.0 = Release|x64 22 | {92065202-AF5A-4946-815F-9C1BCF1DD621}.Debug|Win32.ActiveCfg = Debug|Win32 23 | {92065202-AF5A-4946-815F-9C1BCF1DD621}.Debug|Win32.Build.0 = Debug|Win32 24 | {92065202-AF5A-4946-815F-9C1BCF1DD621}.Debug|x64.ActiveCfg = Debug|x64 25 | {92065202-AF5A-4946-815F-9C1BCF1DD621}.Debug|x64.Build.0 = Debug|x64 26 | {92065202-AF5A-4946-815F-9C1BCF1DD621}.Release|Win32.ActiveCfg = Release|Win32 27 | {92065202-AF5A-4946-815F-9C1BCF1DD621}.Release|Win32.Build.0 = Release|Win32 28 | {92065202-AF5A-4946-815F-9C1BCF1DD621}.Release|x64.ActiveCfg = Release|x64 29 | {92065202-AF5A-4946-815F-9C1BCF1DD621}.Release|x64.Build.0 = Release|x64 30 | EndGlobalSection 31 | GlobalSection(SolutionProperties) = preSolution 32 | HideSolutionNode = FALSE 33 | EndGlobalSection 34 | EndGlobal 35 | -------------------------------------------------------------------------------- /QRibbon/QRibbon.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/longyangzz/osgGisMap/ba47202eb226538dcbfe3192eba7ec12da3c1934/QRibbon/QRibbon.suo -------------------------------------------------------------------------------- /QRibbon/QRibbon.vcxproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Release 6 | x64 7 | 8 | 9 | Debug 10 | x64 11 | 12 | 13 | 14 | {632BC80B-5D71-3F54-9965-F2F15991A9C4} 15 | QRibbon 16 | Qt4VSv1.0 17 | 10.0.17763.0 18 | 19 | 20 | 21 | v140 22 | release\ 23 | false 24 | NotSet 25 | DynamicLibrary 26 | release\ 27 | QRibbon 28 | 29 | 30 | v140 31 | debug\ 32 | false 33 | NotSet 34 | DynamicLibrary 35 | debug\ 36 | QRibbon 37 | 38 | 39 | 40 | $(MSBuildProjectDirectory)\QtMsBuild 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | release\ 58 | $(Platform)\$(Configuration)\ 59 | QRibbon 60 | true 61 | false 62 | debug\ 63 | $(Platform)\$(Configuration)\ 64 | QRibbon 65 | true 66 | 67 | 68 | 69 | .\GeneratedFiles\$(ConfigurationName);.\GeneratedFiles;.;$(QTDIR)\include;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtCore;release;$(QTDIR)\mkspecs\win32-msvc2015;%(AdditionalIncludeDirectories) 70 | -Zc:strictStrings -Zc:throwingNew -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 %(AdditionalOptions) 71 | release\ 72 | false 73 | None 74 | 4577;%(DisableSpecificWarnings) 75 | Sync 76 | $(IntDir) 77 | MaxSpeed 78 | _WINDOWS;UNICODE;WIN32;WIN64;QRIBBON_LIBRARY;QT_NO_DEBUG;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;NDEBUG;%(PreprocessorDefinitions) 79 | false 80 | $(IntDir)vc$(PlatformToolsetVersion).pdb 81 | MultiThreadedDLL 82 | true 83 | true 84 | true 85 | Level3 86 | true 87 | 88 | 89 | $(QTDIR)\lib\Qt5Widgets.lib;$(QTDIR)\lib\Qt5Gui.lib;$(QTDIR)\lib\Qt5Core.lib;%(AdditionalDependencies) 90 | $(QTDIR)\lib;$(QTDIR)\lib;%(AdditionalLibraryDirectories) 91 | true 92 | false 93 | true 94 | true 95 | false 96 | $(OutDir)\QRibbon.dll 97 | true 98 | Windows 99 | true 100 | 101 | 102 | Unsigned 103 | None 104 | 0 105 | 106 | 107 | _WINDOWS;UNICODE;WIN32;WIN64;QRIBBON_LIBRARY;QT_NO_DEBUG;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;%(PreprocessorDefinitions) 108 | 109 | 110 | $(QTDIR) 111 | $(Configuration)\moc_%(Filename).cpp 112 | UNICODE;WIN32;WIN64;QRIBBON_LIBRARY;QT_NO_DEBUG;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;_MSC_VER=1900;_WIN32;_WIN64 113 | Moc'ing %(Identity)... 114 | %(FullPath) 115 | output 116 | .\GeneratedFiles\$(ConfigurationName);.\GeneratedFiles;$(QTDIR)\mkspecs/win32-msvc2015;.;$(QTDIR)\include;$(QTDIR)\include/QtWidgets;$(QTDIR)\include/QtGui;$(QTDIR)\include/QtANGLE;$(QTDIR)\include/QtCore 117 | 118 | 119 | qribbon 120 | $(Configuration)\qrc_%(Filename).cpp 121 | %(FullPath) 122 | $(QTDIR) 123 | default 124 | Rcc'ing %(Identity)... 125 | 126 | 127 | 128 | 129 | .\GeneratedFiles\$(ConfigurationName);.\GeneratedFiles;.;$(QTDIR)\include;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtCore;debug;$(QTDIR)\mkspecs\win32-msvc2015;%(AdditionalIncludeDirectories) 130 | -Zc:strictStrings -Zc:throwingNew -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 %(AdditionalOptions) 131 | debug\ 132 | false 133 | ProgramDatabase 134 | 4577;%(DisableSpecificWarnings) 135 | Sync 136 | $(IntDir) 137 | Disabled 138 | _WINDOWS;UNICODE;WIN32;WIN64;QRIBBON_LIBRARY;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;%(PreprocessorDefinitions) 139 | false 140 | MultiThreadedDebugDLL 141 | true 142 | true 143 | true 144 | Level3 145 | true 146 | $(IntDir)vc$(PlatformToolsetVersion).pdb 147 | 148 | 149 | $(QTDIR)\lib\Qt5Widgetsd.lib;$(QTDIR)\lib\Qt5Guid.lib;$(QTDIR)\lib\Qt5Cored.lib;%(AdditionalDependencies) 150 | $(QTDIR)\lib;$(QTDIR)\lib;%(AdditionalLibraryDirectories) 151 | true 152 | true 153 | true 154 | true 155 | $(OutDir)\QRibbon.dll 156 | true 157 | Windows 158 | true 159 | 160 | 161 | Unsigned 162 | None 163 | 0 164 | 165 | 166 | _WINDOWS;UNICODE;WIN32;WIN64;QRIBBON_LIBRARY;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;_DEBUG;%(PreprocessorDefinitions) 167 | 168 | 169 | $(QTDIR) 170 | $(Configuration)\moc_%(Filename).cpp 171 | UNICODE;WIN32;WIN64;QRIBBON_LIBRARY;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;_MSC_VER=1900;_WIN32;_WIN64 172 | Moc'ing %(Identity)... 173 | %(FullPath) 174 | output 175 | .\GeneratedFiles\$(ConfigurationName);.\GeneratedFiles;$(QTDIR)\mkspecs/win32-msvc2015;.;$(QTDIR)\include;$(QTDIR)\include/QtWidgets;$(QTDIR)\include/QtGui;$(QTDIR)\include/QtANGLE;$(QTDIR)\include/QtCore 176 | 177 | 178 | $(QTDIR) 179 | %(FullPath) 180 | $(Configuration)\qrc_%(Filename).cpp 181 | qribbon 182 | default 183 | Rcc'ing %(Identity)... 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | -------------------------------------------------------------------------------- /QRibbon/QRibbon.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {71ED8ED8-ACB9-4CE9-BBE1-E00B30144E11} 6 | cpp;c;cxx;moc;h;def;odl;idl;res; 7 | 8 | 9 | {71ED8ED8-ACB9-4CE9-BBE1-E00B30144E11} 10 | cpp;c;cxx;moc;h;def;odl;idl;res; 11 | 12 | 13 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 14 | h;hpp;hxx;hm;inl;inc;xsd 15 | 16 | 17 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 18 | h;hpp;hxx;hm;inl;inc;xsd 19 | 20 | 21 | {D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E} 22 | qrc;* 23 | false 24 | 25 | 26 | {D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E} 27 | qrc;* 28 | false 29 | 30 | 31 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 32 | cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx 33 | 34 | 35 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 36 | cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx 37 | 38 | 39 | {B83CAF91-C7BF-462F-B76C-EA11631F866C} 40 | * 41 | false 42 | 43 | 44 | {B83CAF91-C7BF-462F-B76C-EA11631F866C} 45 | * 46 | false 47 | 48 | 49 | 50 | 51 | Source Files 52 | 53 | 54 | Source Files 55 | 56 | 57 | Source Files 58 | 59 | 60 | 61 | 62 | Header Files 63 | 64 | 65 | Header Files 66 | 67 | 68 | Header Files 69 | 70 | 71 | Header Files 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | Resource Files 85 | 86 | 87 | Resource Files 88 | 89 | 90 | Resource Files 91 | 92 | 93 | Resource Files 94 | 95 | 96 | Resource Files 97 | 98 | 99 | 100 | 101 | Distribution Files 102 | 103 | 104 | Distribution Files 105 | 106 | 107 | Distribution Files 108 | 109 | 110 | -------------------------------------------------------------------------------- /QRibbon/QRibbon.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | G:\library\qt\vs_2015_x64_570\5.7\msvc2015_64 5 | PATH=$(QTDIR)\bin%3b$(PATH) 6 | 7 | 8 | G:\library\qt\vs_2015_x64_570\5.7\msvc2015_64 9 | PATH=$(QTDIR)\bin%3b$(PATH) 10 | 11 | -------------------------------------------------------------------------------- /QRibbon/QRibbonDetails.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 24 | 28 | 29 | 32 | 36 | 37 | 38 | 60 | 62 | 63 | 65 | image/svg+xml 66 | 68 | 69 | 70 | 71 | 72 | 77 | 86 | 92 | 93 | 94 | -------------------------------------------------------------------------------- /QRibbon/README.md: -------------------------------------------------------------------------------- 1 | # QRibbon 2 | A Ribbon Toolbar / Menu for Qt 3 | -------------------------------------------------------------------------------- /QRibbon/RibbonPoint.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 20 | 42 | 44 | 45 | 47 | image/svg+xml 48 | 50 | 51 | 52 | 53 | 54 | 59 | 61 | 64 | 76 | 86 | 87 | 97 | 100 | 112 | 122 | 123 | 129 | 130 | 131 | 132 | -------------------------------------------------------------------------------- /QRibbon/RibbonUp.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 20 | 42 | 44 | 45 | 47 | image/svg+xml 48 | 50 | 51 | 52 | 53 | 54 | 59 | 69 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /QRibbon/main.cpp: -------------------------------------------------------------------------------- 1 | //#include 2 | #include 3 | 4 | #include "qribbontest.h" 5 | 6 | int main(int argc, char *argv[]) 7 | { 8 | QApplication app(argc, argv); 9 | app.setOrganizationName("QtProject"); 10 | app.setApplicationName("Application Example"); 11 | QRibbonTest mainWin; 12 | mainWin.show(); 13 | return app.exec(); 14 | } 15 | -------------------------------------------------------------------------------- /QRibbon/memorycheck.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | set PATH=%PATH%;..\lib;C:\Qt\5.4\msvc2013\bin 3 | cd ..\build-QRibbon-Desktop_Qt_5_4_1_MSVC2013_32bit-App\debug 4 | drmemory.exe qribbontest.exe -------------------------------------------------------------------------------- /QRibbon/qribbon.cpp: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | ** 3 | ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). 4 | ** Contact: http://www.qt-project.org/legal 5 | ** 6 | ** This file is part of the examples of the Qt Toolkit. 7 | ** 8 | ** $QT_BEGIN_LICENSE:BSD$ 9 | ** You may use this file under the terms of the BSD license as follows: 10 | ** 11 | ** "Redistribution and use in source and binary forms, with or without 12 | ** modification, are permitted provided that the following conditions are 13 | ** met: 14 | ** * Redistributions of source code must retain the above copyright 15 | ** notice, this list of conditions and the following disclaimer. 16 | ** * Redistributions in binary form must reproduce the above copyright 17 | ** notice, this list of conditions and the following disclaimer in 18 | ** the documentation and/or other materials provided with the 19 | ** distribution. 20 | ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names 21 | ** of its contributors may be used to endorse or promote products derived 22 | ** from this software without specific prior written permission. 23 | ** 24 | ** 25 | ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 26 | ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 27 | ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 28 | ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 29 | ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 30 | ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 31 | ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 32 | ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 33 | ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 34 | ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 35 | ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." 36 | ** 37 | ** $QT_END_LICENSE$ 38 | ** 39 | ****************************************************************************/ 40 | 41 | #include 42 | 43 | #include "qribbon.h" 44 | #include "qribbonbutton.h" 45 | #include "qribbonsection.h" 46 | 47 | #include 48 | #include 49 | #include 50 | #include 51 | #include 52 | #include 53 | #include 54 | #include 55 | #include 56 | 57 | QRibbon::QRibbon(QWidget *parent) : QTabWidget(parent) 58 | { 59 | hidden = false; 60 | popup = false; 61 | connect(this, SIGNAL(tabBarClicked(int)), this, SLOT(showRibbon(int))); 62 | 63 | QSizePolicy p = this->sizePolicy(); 64 | p.setVerticalPolicy(QSizePolicy::Minimum); 65 | super::setSizePolicy(p); 66 | 67 | up = new QIcon(":/icons/RibbonUp.svg"); 68 | point = new QIcon(":/icons/RibbonPoint.svg"); 69 | 70 | { 71 | QString sheet = this->styleSheet(); 72 | QWidget w; 73 | QColor c = w.palette().color(QPalette::Window); 74 | 75 | sheet.append("QTabWidget::pane { border: 1px solid #c0c0c0;top: -1px;background: "+c.name()+"; }"); 76 | sheet.append("QTabBar::tab:!selected { border: 0px;margin: 0px;padding: 8px;background: none; }"); 77 | sheet.append("QTabBar::tab:selected { background: " + c.name() + ";padding: 8px; }"); 78 | sheet.append("QTabBar::tab { background: "+c.name()+"; border: 1px solid #c0c0c0; margin: 0px; padding: 8px; margin-bottom: -2px; border-bottom: 0px; }"); 79 | sheet.append("QTabWidget::tab-bar { left: 3pt; }"); 80 | //QMessageBox box; 81 | //box.setText(sheet); 82 | //box.exec(); 83 | this->setStyleSheet(sheet); 84 | } 85 | } 86 | 87 | QRibbon::~QRibbon() 88 | { 89 | delete up; 90 | delete point; 91 | } 92 | 93 | QWidget *QRibbon::makeTab(QWidget *widget, int index) 94 | { 95 | QWidget *tab = new QWidget(); 96 | QPalette pal(tab->palette()); 97 | pal.setColor(QPalette::Background, tab->palette().color(QPalette::Window)); 98 | tab->setPalette(pal); 99 | tab->setAutoFillBackground(true); 100 | //tab->setStyleSheet("border: 1px solid black"); 101 | 102 | // Our widget is layed out as a grid 103 | QGridLayout *layout = new QGridLayout(); 104 | layout->setContentsMargins(0,0,0,0); 105 | layout->setSpacing(0); 106 | tab->setLayout(layout); 107 | 108 | // It will contain a hide button 109 | QPushButton *hide = new QRibbonButton(*up, "", widget); 110 | hide->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); 111 | QFont f; 112 | QFontMetrics metrics(f); 113 | QSize is = QSize(metrics.boundingRect("^").width()*2, metrics.boundingRect("^").height()*2); 114 | hide->setIconSize(is); 115 | is = QSize(is.width()*2, is.height()); 116 | hide->setMaximumSize(is); 117 | //hide->setFlat(true); 118 | 119 | //QGridLayout *layout = (QGridLayout *) widget->layout(); 120 | layout->addWidget(widget,0,0,1,1); 121 | layout->setAlignment(widget, Qt::AlignVertical_Mask | Qt::AlignLeft); //Qt::AlignHorizontal_Mask); 122 | layout->addWidget(hide,0,1,1,1); 123 | layout->setAlignment(hide, Qt::AlignRight | Qt::AlignBottom); 124 | 125 | if (index < 0) { 126 | pins.append(hide); 127 | widgets.append(widget); 128 | } else { 129 | pins.insert(index, hide); 130 | widgets.insert(index, widget); 131 | } 132 | 133 | QObject::connect(hide, SIGNAL(clicked()), this, SLOT(hideShow())); 134 | 135 | return tab; 136 | } 137 | 138 | int QRibbon::addTab(QWidget *widget, const QIcon &icon, const QString &label, const QString &name) 139 | { 140 | if (&name != 0) { widget->setObjectName(name); } 141 | return super::addTab(makeTab(widget), icon, label); 142 | } 143 | 144 | int QRibbon::addTab(QWidget *widget, const QString &label, const QString &name) 145 | { 146 | if (&name != 0) { widget->setObjectName(name); } 147 | return super::addTab(makeTab(widget), label); 148 | } 149 | 150 | int QRibbon::addTab(QWidget *widget, const QString &name) 151 | { 152 | if (&name != 0) { widget->setObjectName(name); } 153 | return super::addTab(makeTab(widget), widget->objectName()); 154 | } 155 | 156 | int QRibbon::addDesignerTab(QWidget *widget) 157 | { 158 | return super::addTab(widget,widget->objectName()); 159 | } 160 | 161 | 162 | int QRibbon::insertTab(int index, QWidget *widget, const QIcon &icon, const QString &label, const QString &name) 163 | { 164 | if (&name != 0) { widget->setObjectName(name); } 165 | return super::insertTab(index, makeTab(widget), icon, label); 166 | } 167 | 168 | int QRibbon::insertTab(int index, QWidget *widget, const QString &label, const QString &name) 169 | { 170 | if (&name != 0) { widget->setObjectName(name); } 171 | return super::insertTab(index, makeTab(widget), label); 172 | } 173 | 174 | int QRibbon::insertTab(int index, QWidget *widget, const QString &name) 175 | { 176 | if (&name != 0) { widget->setObjectName(name); } 177 | return super::insertTab(index, makeTab(widget), widget->objectName()); 178 | } 179 | 180 | int QRibbon::insertDesignerTab(int index, QWidget *widget) 181 | { 182 | return super::insertTab(index, widget, widget->objectName()); 183 | } 184 | 185 | 186 | QWidget *QRibbon::addRibbonTab(const QString & label, const QString & name) 187 | { 188 | QWidget * widget = new QWidget(); 189 | QHBoxLayout *hbox = new QHBoxLayout(); 190 | hbox->setContentsMargins(0,0,0,0); 191 | hbox->setSpacing(2); 192 | widget->setLayout(hbox); 193 | if (&name != 0) { widget->setObjectName(name); } 194 | this->addTab(widget, label, widget->objectName()); 195 | return widget; 196 | } 197 | 198 | void QRibbon::setCurrentIndex(int index) 199 | { 200 | super::setCurrentIndex(index); 201 | emit currentIndexChanged(index); 202 | } 203 | 204 | void QRibbon::setRibbonVisible(bool visible) { 205 | hidden = !visible; 206 | emit ribbonVisibilityChanged(visible); 207 | } 208 | 209 | QSize QRibbon::minimumSizeHint() const 210 | { 211 | return (hidden) ? currentSize : super::minimumSizeHint(); 212 | } 213 | 214 | QSize QRibbon::sizeHint() const 215 | { 216 | return (hidden) ? currentSize : super::sizeHint(); 217 | } 218 | 219 | void QRibbon::hideShow() 220 | { 221 | if (!hidden) { 222 | prevSize = this->size(); 223 | int i; 224 | for(i = 0; i < this->count(); i++) { 225 | QWidget *page = this->widget(i); 226 | page->setVisible(false); 227 | pins[i]->setIcon(*point); 228 | } 229 | QSize newSize(prevSize.width(), this->tabBar()->size().height()); 230 | currentSize = newSize; 231 | this->updateGeometry(); 232 | setRibbonVisible(false); 233 | popup = true; 234 | } else { 235 | int i; 236 | for(i = 0; i < this->count(); i++) { 237 | QWidget *page = this->widget(i); 238 | page->setVisible(true); 239 | pins[i]->setIcon(*up); 240 | } 241 | currentSize = prevSize; 242 | this->updateGeometry(); 243 | setRibbonVisible(true); 244 | popup = false; 245 | } 246 | 247 | } 248 | 249 | void QRibbon::showRibbon(int page) 250 | { 251 | if (hidden) { 252 | if (page == this->currentIndex() && popup) { 253 | popup = false; 254 | currentSize = prevSize; 255 | this->updateGeometry(); 256 | int i; 257 | for(i = 0; i < this->count(); i++) { 258 | QWidget *page = this->widget(i); 259 | page->setVisible(true); 260 | } 261 | } else { 262 | int i; 263 | for(i = 0; i < this->count(); i++) { 264 | QWidget *page = this->widget(i); 265 | page->setVisible(false); 266 | } 267 | QSize newSize(prevSize.width(), this->tabBar()->size().height()); 268 | currentSize = newSize; 269 | this->updateGeometry(); 270 | popup = true; 271 | } 272 | } 273 | if (page != this->currentIndex()) { 274 | emit currentIndexChanged(page); 275 | } 276 | } 277 | 278 | QWidget *QRibbon::tab(int index) const 279 | { 280 | return super::widget(index); 281 | //return widgets[index]; 282 | } 283 | 284 | QRibbonSection *QRibbon::section(const QString & name) const 285 | { 286 | int i; 287 | for(i = 0; i < widgets.size(); i++) { 288 | QWidget *widget = widgets[i]; 289 | QObjectList list = widget->children(); 290 | int j; 291 | for(j = 0; j < list.size(); j++) { 292 | QObject *w = list[j]; 293 | if (_stricmp(w->metaObject()->className(),"QRibbonSection") == 0) { 294 | if (w->objectName() == name) { 295 | return (QRibbonSection *) w; 296 | } 297 | } 298 | } 299 | } 300 | return NULL; 301 | } 302 | 303 | void QRibbon::addSection(const QString &tabName, QRibbonSection *section) 304 | { 305 | int i; 306 | for(i = 0; i < widgets.size(); i++) { 307 | QWidget *w = widgets[i]; 308 | if (w->objectName() == tabName) { 309 | QLayout *l = w->layout(); 310 | if (!l) { 311 | QHBoxLayout *hb = new QHBoxLayout(); 312 | hb->setContentsMargins(0,0,0,0); 313 | hb->setSpacing(2); 314 | w->setLayout(hb); 315 | l = w->layout(); 316 | } 317 | l->addWidget(section); 318 | i = widgets.size() - 1; 319 | } 320 | } 321 | } 322 | 323 | QRibbonSection *QRibbon::section(int tabIndex, int sectionIndex) const 324 | { 325 | QWidget *widget = (tabIndex >= 0 && tabIndex children(); 328 | QObject *w = (sectionIndex >= 0 && sectionIndex < list.size()) ? list[sectionIndex] : NULL; 329 | if (_stricmp(w->metaObject()->className(),"QRibbonSection") == 0) { 330 | return (QRibbonSection *) w; 331 | } 332 | } 333 | 334 | return NULL; 335 | } 336 | 337 | void QRibbon::setTabText(int index, const QString & txt) { 338 | super::setTabText(index, txt); 339 | emit tabTextChanged(index, txt); 340 | } 341 | 342 | 343 | -------------------------------------------------------------------------------- /QRibbon/qribbon.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | ** 3 | ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). 4 | ** Contact: http://www.qt-project.org/legal 5 | ** 6 | ** This file is part of the examples of the Qt Toolkit. 7 | ** 8 | ** $QT_BEGIN_LICENSE:BSD$ 9 | ** You may use this file under the terms of the BSD license as follows: 10 | ** 11 | ** "Redistribution and use in source and binary forms, with or without 12 | ** modification, are permitted provided that the following conditions are 13 | ** met: 14 | ** * Redistributions of source code must retain the above copyright 15 | ** notice, this list of conditions and the following disclaimer. 16 | ** * Redistributions in binary form must reproduce the above copyright 17 | ** notice, this list of conditions and the following disclaimer in 18 | ** the documentation and/or other materials provided with the 19 | ** distribution. 20 | ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names 21 | ** of its contributors may be used to endorse or promote products derived 22 | ** from this software without specific prior written permission. 23 | ** 24 | ** 25 | ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 26 | ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 27 | ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 28 | ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 29 | ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 30 | ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 31 | ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 32 | ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 33 | ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 34 | ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 35 | ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." 36 | ** 37 | ** $QT_END_LICENSE$ 38 | ** 39 | ****************************************************************************/ 40 | 41 | #ifndef QRIBBON_H 42 | #define QRIBBON_H 43 | 44 | #include "qribbon_global.h" 45 | #include 46 | #include 47 | #include 48 | 49 | class QRibbonSection; 50 | 51 | class QRIBBON_EXPORT QRibbon : public QTabWidget 52 | { 53 | Q_OBJECT 54 | 55 | private: 56 | bool hidden, popup; 57 | QSize prevSize, currentSize; 58 | QIcon *up, *point; 59 | QVector pins; 60 | QVector widgets; 61 | 62 | private: 63 | QWidget *makeTab(QWidget *widget, int index = -1); 64 | 65 | protected: 66 | typedef QTabWidget super; 67 | virtual QSize minimumSizeHint() const; 68 | virtual QSize sizeHint() const; 69 | 70 | public: 71 | QRibbon(QWidget *parent = 0); 72 | ~QRibbon(); 73 | 74 | public: 75 | int addTab(QWidget *widget, const QIcon &icon, const QString &label, const QString &name = 0); 76 | int addTab(QWidget *widget, const QString &label, const QString &name = 0); 77 | int addTab(QWidget *widget, const QString &name = 0); 78 | int insertTab(int index, QWidget *widget, const QIcon &icon, const QString &label, const QString &name = 0); 79 | int insertTab(int index, QWidget *widget, const QString &label, const QString &name = 0); 80 | int insertTab(int index, QWidget *widget, const QString &name = 0); 81 | 82 | public: 83 | int addDesignerTab(QWidget *widget); 84 | int insertDesignerTab(int index, QWidget *widget); 85 | 86 | public: 87 | QWidget *tab(int index) const; 88 | 89 | public: 90 | QWidget *addRibbonTab(const QString & label, const QString & name = 0); 91 | 92 | void setCurrentIndex(int index); 93 | void setTabText(int index, const QString &txt); 94 | 95 | QRibbonSection *section(int tabIndex, int sectionIndex) const; 96 | QRibbonSection *section(const QString &name) const; 97 | 98 | void addSection(const QString & tabName, QRibbonSection *section); 99 | 100 | signals: 101 | void ribbonVisibilityChanged(bool visible); 102 | void currentIndexChanged(int index); 103 | void tabTextChanged(int index, const QString & txt); 104 | 105 | protected slots: 106 | void setRibbonVisible(bool visible); 107 | void hideShow(); 108 | void showRibbon(int page); 109 | 110 | }; 111 | 112 | #endif // QRIBBON_H 113 | -------------------------------------------------------------------------------- /QRibbon/qribbon.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | RibbonUp.svg 4 | RibbonPoint.svg 5 | QRibbonDetails.svg 6 | test.svg 7 | 8 | 9 | -------------------------------------------------------------------------------- /QRibbon/qribbon_global.h: -------------------------------------------------------------------------------- 1 | #ifndef QRIBBON_GLOBAL_H 2 | #define QRIBBON_GLOBAL_H 3 | 4 | #include 5 | 6 | #if defined(QRIBBON_LIBRARY) 7 | # define QRIBBON_EXPORT Q_DECL_EXPORT 8 | #else 9 | # if defined(QRIBBON_TEST) 10 | # define QRIBBON_EXPORT 11 | # else 12 | # define QRIBBON_EXPORT Q_DECL_IMPORT 13 | # endif 14 | #endif 15 | 16 | #endif // QRIBBON_GLOBAL_H 17 | 18 | -------------------------------------------------------------------------------- /QRibbon/qribbonbutton.cpp: -------------------------------------------------------------------------------- 1 | #include "qribbonbutton.h" 2 | 3 | #include 4 | #include 5 | 6 | QRibbonButton::QRibbonButton(QWidget *parent) : QPushButton(parent) 7 | { 8 | init(NULL); 9 | } 10 | 11 | QRibbonButton::QRibbonButton(const QString &text, QWidget *parent) : QPushButton(text, parent) 12 | { 13 | init(NULL); 14 | } 15 | 16 | QRibbonButton::QRibbonButton(const QIcon &icon, const QString &text, QWidget *parent) 17 | : QPushButton(icon, text, parent) 18 | { 19 | init(NULL); 20 | } 21 | 22 | QRibbonButton::QRibbonButton(const QIcon &icon, const QString &text, const QString & name, QWidget *parent) 23 | : QPushButton(icon, text, parent) 24 | { 25 | init(&name); 26 | } 27 | 28 | 29 | 30 | static int button_number = 0; 31 | 32 | void QRibbonButton::init(const QString *_name) 33 | { 34 | setFlat(true); 35 | _action = NULL; 36 | 37 | button_number += 1; 38 | QString name; 39 | if (_name == NULL) { // small error here 40 | name = name.sprintf("%s_%04d", "qribbonbut", button_number); 41 | this->setObjectName(name); 42 | } else { 43 | name = *_name; 44 | } 45 | this->setStyleSheet("#" + name + ":hover { background: #d5e1f2;border: none; }"); 46 | } 47 | 48 | void QRibbonButton::setAction(QAction *a) { 49 | _action = a; 50 | } 51 | 52 | QAction *QRibbonButton::getAction() { 53 | return _action; 54 | } 55 | 56 | bool QRibbonButton::event(QEvent *e) 57 | { 58 | /*if(e->type() == QEvent::HoverEnter) { 59 | // setFlat(false); 60 | } 61 | 62 | if(e->type() == QEvent::HoverLeave) { 63 | // setFlat(true); 64 | }*/ 65 | 66 | return QPushButton::event(e); 67 | } 68 | 69 | -------------------------------------------------------------------------------- /QRibbon/qribbonbutton.h: -------------------------------------------------------------------------------- 1 | #ifndef QRIBBONBUTTON_H 2 | #define QRIBBONBUTTON_H 3 | 4 | #include "qribbon_global.h" 5 | 6 | #include 7 | 8 | 9 | class QRIBBON_EXPORT QRibbonButton : public QPushButton 10 | { 11 | private: 12 | void init(const QString *_name); 13 | 14 | public: 15 | QRibbonButton(QWidget *parent); 16 | QRibbonButton(const QString & text, QWidget * parent = 0); 17 | QRibbonButton(const QIcon & icon, const QString & text, QWidget * parent = 0); 18 | QRibbonButton(const QIcon & icon, const QString & text, const QString & name, QWidget * parent = 0); 19 | 20 | public: 21 | void setAction(QAction *a); 22 | QAction *getAction(); 23 | 24 | protected: 25 | bool event(QEvent *e); 26 | 27 | private: 28 | QAction *_action; 29 | }; 30 | 31 | #endif // QRIBBONBUTTON_H 32 | -------------------------------------------------------------------------------- /QRibbon/qribbonsection.cpp: -------------------------------------------------------------------------------- 1 | #include "qribbonbutton.h" 2 | #include "qribbonsection.h" 3 | 4 | #include 5 | #include 6 | 7 | QRibbonSection::QRibbonSection(QWidget *parent, const QString &_title, const QString &_name) : QWidget(parent) 8 | { 9 | action = NULL; 10 | col = 0; 11 | row = 0; 12 | colBase = 0; 13 | _index = -1; 14 | 15 | if (&_name) { this->setObjectName(_name); } 16 | 17 | QHBoxLayout *slayout = new QHBoxLayout(); 18 | slayout->setContentsMargins(2,0,2,0); 19 | slayout->setSpacing(2); 20 | this->setLayout(slayout); 21 | 22 | //QLabel *lab_line = new QLabel("X", this); 23 | QFrame *line = new QFrame(this); 24 | line->setFrameStyle(QFrame::VLine | QFrame::Plain); 25 | line->setFixedWidth(3); 26 | line->setContentsMargins(0,3,0,5); 27 | line->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); 28 | QString sheet = line->styleSheet(); 29 | sheet.append("QFrame { color: #c0c0c0; }"); 30 | line->setStyleSheet(sheet); 31 | 32 | QWidget *wvbox = new QWidget(this); 33 | QVBoxLayout *layout = new QVBoxLayout(); 34 | layout->setContentsMargins(0,0,0,0); 35 | layout->setSpacing(0); 36 | wvbox->setLayout(layout); 37 | 38 | buttons = new QWidget(wvbox); 39 | QGridLayout *blayout = new QGridLayout(); 40 | blayout->setContentsMargins(0,0,0,0); 41 | blayout->setSpacing(2); 42 | buttons->setLayout(blayout); 43 | 44 | QHBoxLayout *lfooter = new QHBoxLayout(); 45 | lfooter->setContentsMargins(0,0,0,0); 46 | QWidget *footer = new QWidget(wvbox); 47 | footer->setLayout(lfooter); 48 | 49 | if (&title == 0) { 50 | title = new QLabel("", footer); 51 | } else { 52 | title = new QLabel(_title, footer); 53 | } 54 | title->setAlignment(Qt::AlignCenter); 55 | QFont titleFont = title->font(); 56 | titleFont.setPointSize(titleFont.pointSize()*0.98f); 57 | title->setFont(titleFont); 58 | 59 | { 60 | QIcon *dtl = new QIcon(":/icons/QRibbonDetails.svg"); 61 | details = new QRibbonButton(*dtl, "", footer); 62 | delete dtl; 63 | } 64 | details->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); 65 | QFont f; 66 | QFontMetrics metrics(f); 67 | QSize is = QSize(metrics.boundingRect("^").width(), metrics.boundingRect("X").height()); 68 | is = QSize(is.width()*2, is.height()); 69 | details->setIconSize(is); 70 | details->setMaximumSize(is); 71 | details->setVisible(false); 72 | QObject::connect(details, SIGNAL(clicked()), this, SLOT(activateDetails())); 73 | 74 | 75 | lfooter->addWidget(title, 1); 76 | lfooter->addWidget(details); 77 | 78 | layout->addWidget(buttons, 1); 79 | layout->addWidget(footer); 80 | 81 | slayout->addWidget(wvbox, 1); 82 | slayout->addWidget(line, 1); 83 | } 84 | 85 | QRibbonSection::~QRibbonSection() 86 | { 87 | } 88 | 89 | void QRibbonSection::setDetailsAction(QAction *_action) 90 | { 91 | action = _action; 92 | details->setVisible(action != NULL); 93 | } 94 | 95 | void QRibbonSection::activateDetails() 96 | { 97 | if (action) { 98 | action->trigger(); 99 | } 100 | } 101 | 102 | void QRibbonSection::activateAction() 103 | { 104 | QAction *a; 105 | QRibbonButton *b = (QRibbonButton *) sender(); 106 | if (b) { 107 | a = b->getAction(); 108 | if (a) { 109 | a->trigger(); 110 | } 111 | } 112 | } 113 | 114 | QWidget *QRibbonSection::widget(int index) { 115 | return _widgets[index]; 116 | } 117 | 118 | int QRibbonSection::count() { 119 | return _widgets.size(); 120 | } 121 | 122 | int QRibbonSection::currentIndex() { 123 | return _index; 124 | } 125 | 126 | void QRibbonSection::setCurrentIndex(int i) { 127 | _index = i; 128 | } 129 | 130 | void QRibbonSection::addAction(QAction * a, const QString &name) 131 | { 132 | QGridLayout *l = (QGridLayout *) buttons->layout(); 133 | QRibbonButton *btn = new QRibbonButton(a->icon(), a->text(), name, buttons); 134 | btn->setAction(a); 135 | connect(btn, SIGNAL(clicked()), this, SLOT(activateAction())); 136 | if (&name != 0) { btn->setObjectName(name); } else { btn->setObjectName(a->objectName()); } 137 | l->addWidget(btn, row, col, 1, 1); 138 | col += 1; 139 | _widgets.append(btn); 140 | } 141 | 142 | void QRibbonSection::addLargeAction(QAction * a, const QString &name) 143 | { 144 | QGridLayout *l = (QGridLayout *) buttons->layout(); 145 | QRibbonButton *btn = new QRibbonButton(a->icon(), a->text(), name, buttons); 146 | btn->setAction(a); 147 | connect(btn, SIGNAL(clicked()), this, SLOT(activateAction())); 148 | if (&name != 0) { btn->setObjectName(name); } else { btn->setObjectName(a->objectName()); } 149 | nextColumn(); 150 | btn->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); 151 | btn->setIconSize(QSize(btn->iconSize().width() * 2, btn->iconSize().height() * 2)); 152 | l->addWidget(btn, row, col, 2, 2); 153 | col += 2; 154 | _widgets.append(btn); 155 | } 156 | 157 | void QRibbonSection::addWidget(QWidget *w, const QString &name, int colspan) 158 | { 159 | QGridLayout *l = (QGridLayout *) buttons->layout(); 160 | if (&name != 0) { w->setObjectName(name); } 161 | l->addWidget(w, row, col, 1, colspan); 162 | col += colspan; 163 | _widgets.append(w); 164 | } 165 | 166 | void QRibbonSection::addLargeWidget(QWidget *w, const QString &name) 167 | { 168 | QGridLayout *l = (QGridLayout *) buttons->layout(); 169 | if (&name != 0) { w->setObjectName(name); } 170 | nextColumn(); 171 | l->addWidget(w, row, col, 2, 2); 172 | col += 2; 173 | _widgets.append(w); 174 | } 175 | 176 | void QRibbonSection::nextColumn() { 177 | QGridLayout *l = (QGridLayout *) buttons->layout(); 178 | colBase = l->columnCount(); 179 | col = colBase; 180 | row = 0; 181 | } 182 | 183 | void QRibbonSection::nextRow() { 184 | row += 1; 185 | col = colBase; 186 | } 187 | 188 | void QRibbonSection::setTitle(const QString &_title) 189 | { 190 | title->setText(_title); 191 | } 192 | 193 | -------------------------------------------------------------------------------- /QRibbon/qribbonsection.h: -------------------------------------------------------------------------------- 1 | #ifndef QRIBBONSECTION_H 2 | #define QRIBBONSECTION_H 3 | 4 | #include "qribbon_global.h" 5 | 6 | #include 7 | #include 8 | #include 9 | #include 10 | 11 | class QRIBBON_EXPORT QRibbonSection : public QWidget 12 | { 13 | Q_OBJECT 14 | 15 | public: 16 | QRibbonSection(QWidget *parent = 0, const QString &title = 0, const QString &name = 0); 17 | ~QRibbonSection(); 18 | 19 | private: 20 | QWidget *buttons; 21 | QLabel *title; 22 | QPushButton *details; 23 | QAction *action; 24 | 25 | int row; 26 | int col; 27 | int colBase; 28 | 29 | QVector _widgets; 30 | int _index; 31 | 32 | public: 33 | void setDetailsAction(QAction * action); 34 | 35 | public slots: 36 | void activateDetails(); 37 | void activateAction(); 38 | 39 | public: 40 | void addAction(QAction * btn, const QString & name = 0); 41 | void addLargeAction(QAction * btn, const QString & name = 0); 42 | 43 | void addLargeWidget(QWidget *w, const QString &name); 44 | void addWidget(QWidget *w, const QString & name = 0, int colspan = 1); 45 | 46 | void nextRow(); 47 | void nextColumn(); 48 | 49 | public: 50 | QWidget *widget(int index); 51 | int count(); 52 | void setCurrentIndex(int index); 53 | int currentIndex(); 54 | 55 | public: 56 | void setTitle(const QString & title); 57 | }; 58 | 59 | #endif // QRIBBONSECTION_H 60 | -------------------------------------------------------------------------------- /QRibbon/qribbontest.cpp: -------------------------------------------------------------------------------- 1 | #include "qribbonsection.h" 2 | #include "qribbontest.h" 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include "qribbon.h" 10 | #include 11 | 12 | QRibbonTest::QRibbonTest() 13 | { 14 | QPlainTextEdit *textEdit = new QPlainTextEdit; 15 | textEdit->insertPlainText("Hallo allemaal!\n\nDit is een tekst!"); 16 | textEdit->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); 17 | QWidget *widget = new QWidget(this); 18 | QVBoxLayout *layout = new QVBoxLayout(); 19 | widget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); 20 | layout->setContentsMargins(0,0,0,0); 21 | layout->setSpacing(0); 22 | 23 | QPushButton *b1 = new QPushButton("Hi!", this); 24 | b1->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); 25 | QPushButton *b2 = new QPushButton("Hallo", this); 26 | connect(b1, SIGNAL(clicked()), this, SLOT(action())); 27 | connect(b2, SIGNAL(clicked()), this, SLOT(action())); 28 | 29 | QRibbon *ribbon = new QRibbon(this); 30 | QWidget* tab = ribbon->addRibbonTab("Start", "start"); 31 | 32 | QRibbonSection *one = new QRibbonSection(tab, "Section One", "one"); 33 | one->addWidget(b1, "b1"); 34 | one->addWidget(b2, "b2"); 35 | 36 | one->nextRow(); 37 | QAction *a1 = new QAction(QIcon(":/icons/test.svg"), "&Test", one); 38 | one->addAction(a1, "a1"); 39 | connect(a1, SIGNAL(triggered()), this, SLOT(action())); 40 | 41 | QAction *a2 = new QAction(QIcon(":/icons/test.svg"), "", one); 42 | one->addLargeAction(a2, "a2"); 43 | connect(a2, SIGNAL(triggered()), this, SLOT(action())); 44 | 45 | QRibbonSection *two = new QRibbonSection(tab, "Section two", "two"); 46 | QAction *aa = new QAction(QIcon(":/icons/test.svg"), "", two); 47 | aa->setObjectName("aa"); 48 | connect(aa, SIGNAL(triggered()), this, SLOT(action())); 49 | two->addLargeAction(aa, "aa"); 50 | QAction *bb = new QAction(QIcon(":/icons/RibbonPoint.svg"), "", two); 51 | bb->setObjectName("bb"); 52 | connect(bb, SIGNAL(triggered()), this, SLOT(action())); 53 | two->addLargeAction(bb, "bb"); 54 | QAction *det = new QAction(two); 55 | two->setDetailsAction(det); 56 | 57 | ribbon->addSection("start", one); 58 | ribbon->addSection("start", two); 59 | 60 | QWidget *tab2 = new QWidget(); 61 | ribbon->addTab(tab2, "Tab 2", "tab2"); 62 | QRibbonSection *three = new QRibbonSection(tab2, "Section 3", "three"); 63 | QAction *a3 = new QAction(QIcon(":/icons/QRibbonDetails.svg"), "", three); 64 | connect(a3, SIGNAL(triggered()), this, SLOT(action())); 65 | QComboBox *cbox = new QComboBox(); 66 | cbox->addItem("hi"); 67 | cbox->addItem("hoi"); 68 | cbox->addItem("jae"); 69 | three->addWidget(cbox, "cbox", 2); 70 | QAction *a4 = new QAction(QIcon(":/icons/test.svg"), "", three); 71 | connect(a4, SIGNAL(triggered()), this, SLOT(action())); 72 | three->nextRow(); 73 | three->addAction(a4, "a4"); 74 | three->addWidget(new QLabel("HI"), ""); 75 | three->addLargeAction(a3, "a3"); 76 | 77 | 78 | ribbon->addSection("tab2", three); 79 | connect(ribbon,SIGNAL(currentIndexChanged(int)),this,SLOT(indexChanged(int))); 80 | 81 | 82 | layout->addWidget(ribbon); 83 | 84 | layout->addWidget(textEdit); 85 | widget->setLayout(layout); 86 | setCentralWidget(widget); 87 | 88 | //this->setWindowFlags(Qt::FramelessWindowHint); 89 | } 90 | 91 | QRibbonTest::~QRibbonTest() 92 | { 93 | 94 | } 95 | 96 | void QRibbonTest::indexChanged(int tab) { 97 | printf("current tab = %d\n", tab); 98 | fflush(stdout); 99 | } 100 | 101 | void QRibbonTest::action() { 102 | QAction *a = (QAction *) sender(); 103 | printf("action = %p\n",a); 104 | if (a->objectName() == "bb") { 105 | printf("JE!\n"); 106 | QApplication::quit(); 107 | } 108 | fflush(stdout); 109 | } 110 | -------------------------------------------------------------------------------- /QRibbon/qribbontest.h: -------------------------------------------------------------------------------- 1 | #ifndef QRIBBONTEST_H 2 | #define QRIBBONTEST_H 3 | 4 | #include 5 | 6 | class QRibbonTest : public QMainWindow 7 | { 8 | Q_OBJECT 9 | 10 | public slots: 11 | void action(); 12 | void indexChanged(int tab); 13 | 14 | public: 15 | QRibbonTest(); 16 | ~QRibbonTest(); 17 | }; 18 | 19 | #endif // QRIBBONTEST_H 20 | -------------------------------------------------------------------------------- /QRibbon/test.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 24 | 28 | 32 | 33 | 42 | 43 | 65 | 67 | 68 | 70 | image/svg+xml 71 | 73 | 74 | 75 | 76 | 77 | 82 | 100 | 105 | 123 | 141 | 142 | 143 | -------------------------------------------------------------------------------- /QtGuiApplication1.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.28307.421 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "QtGuiApplication1", "QtGuiApplication1\QtGuiApplication1.vcxproj", "{B12702AD-ABFB-343A-A199-8E24837244A3}" 7 | EndProject 8 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "QRibbon", "QRibbon\QRibbon.vcxproj", "{632BC80B-5D71-3F54-9965-F2F15991A9C4}" 9 | EndProject 10 | Global 11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 12 | Debug|x64 = Debug|x64 13 | Release|x64 = Release|x64 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {B12702AD-ABFB-343A-A199-8E24837244A3}.Debug|x64.ActiveCfg = Debug|x64 17 | {B12702AD-ABFB-343A-A199-8E24837244A3}.Debug|x64.Build.0 = Debug|x64 18 | {B12702AD-ABFB-343A-A199-8E24837244A3}.Release|x64.ActiveCfg = Release|x64 19 | {B12702AD-ABFB-343A-A199-8E24837244A3}.Release|x64.Build.0 = Release|x64 20 | {632BC80B-5D71-3F54-9965-F2F15991A9C4}.Debug|x64.ActiveCfg = Debug|x64 21 | {632BC80B-5D71-3F54-9965-F2F15991A9C4}.Debug|x64.Build.0 = Debug|x64 22 | {632BC80B-5D71-3F54-9965-F2F15991A9C4}.Release|x64.ActiveCfg = Release|x64 23 | {632BC80B-5D71-3F54-9965-F2F15991A9C4}.Release|x64.Build.0 = Release|x64 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | GlobalSection(ExtensibilityGlobals) = postSolution 29 | SolutionGuid = {212B16D7-68BA-4AD8-B66B-81F3038A0F7B} 30 | Qt5Version = msvc2015_64 31 | EndGlobalSection 32 | EndGlobal 33 | -------------------------------------------------------------------------------- /QtGuiApplication1/QtGuiApplication1.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | Resources/menu/cloudact.png 4 | Resources/menu/createLayeract.png 5 | Resources/menu/loadLayeract.png 6 | Resources/menu/loadTerrainact.png 7 | Resources/menu/onlineact.png 8 | Resources/menu/settingact.png 9 | Resources/menu/googlemapact.png 10 | 11 | 12 | -------------------------------------------------------------------------------- /QtGuiApplication1/QtGuiApplication1.ui: -------------------------------------------------------------------------------- 1 | 2 | QtGuiApplication1Class 3 | 4 | 5 | QtGuiApplication1Class 6 | 7 | 8 | 9 | 0 10 | 0 11 | 600 12 | 400 13 | 14 | 15 | 16 | QtGuiApplication1 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /QtGuiApplication1/QtGuiApplication1.vcxproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | x64 7 | 8 | 9 | Release 10 | x64 11 | 12 | 13 | 14 | {B12702AD-ABFB-343A-A199-8E24837244A3} 15 | Qt4VSv1.0 16 | 10.0.17763.0 17 | 18 | 19 | 20 | Application 21 | v140 22 | 23 | 24 | Application 25 | v140 26 | 27 | 28 | 29 | $(MSBuildProjectDirectory)\QtMsBuild 30 | 31 | 32 | $(SolutionDir)$(Platform)\$(Configuration)\ 33 | 34 | 35 | $(SolutionDir)$(Platform)\$(Configuration)\ 36 | H:\osgearthSDK\include;$(IncludePath) 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | true 56 | UNICODE;_UNICODE;WIN32;WIN64;QT_CORE_LIB;QT_GUI_LIB;QT_WIDGETS_LIB;QT_OPENGL_LIB;%(PreprocessorDefinitions) 57 | .\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtWidgets;H:\osgearthSDK\include;$(QTDIR)\include\QtOpenGL;H:\15.birdmap\osgGisMap\QRibbon;%(AdditionalIncludeDirectories) 58 | Disabled 59 | ProgramDatabase 60 | MultiThreadedDebugDLL 61 | true 62 | 63 | 64 | Windows 65 | $(OutDir)\$(ProjectName).exe 66 | $(QTDIR)\lib;%(AdditionalLibraryDirectories) 67 | true 68 | qtmaind.lib;Qt5Cored.lib;Qt5Guid.lib;Qt5Widgetsd.lib;Qt5OpenGLd.lib;opengl32.lib;glu32.lib;H:\osgearthSDK\lib\osgd.lib;H:\osgearthSDK\lib\osgEarthd.lib;H:\osgearthSDK\lib\osgQt5d.lib;H:\osgearthSDK\lib\osgViewerd.lib;H:\osgearthSDK\lib\osgGAd.lib;H:\15.birdmap\osgGisMap\lib\x64\Debug\QRibbon.lib;%(AdditionalDependencies) 69 | 70 | 71 | .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp 72 | Moc'ing %(Identity)... 73 | .\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtWidgets;H:\osgearthSDK\include;$(QTDIR)\include\QtOpenGL;%(AdditionalIncludeDirectories) 74 | UNICODE;_UNICODE;WIN32;WIN64;QT_CORE_LIB;QT_GUI_LIB;QT_WIDGETS_LIB;QT_OPENGL_LIB;%(PreprocessorDefinitions) 75 | 76 | 77 | Uic'ing %(Identity)... 78 | .\GeneratedFiles\ui_%(Filename).h 79 | 80 | 81 | Rcc'ing %(Identity)... 82 | .\GeneratedFiles\qrc_%(Filename).cpp 83 | 84 | 85 | 86 | 87 | true 88 | UNICODE;_UNICODE;WIN32;WIN64;QT_NO_DEBUG;NDEBUG;QT_CORE_LIB;QT_GUI_LIB;QT_WIDGETS_LIB;QT_OPENGL_LIB;%(PreprocessorDefinitions) 89 | .\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtWidgets;H:\osgearthSDK\include;$(QTDIR)\include\QtOpenGL;H:\2.code\gitspace\QRibbon-master;%(AdditionalIncludeDirectories) 90 | 91 | MultiThreadedDLL 92 | true 93 | 94 | 95 | Windows 96 | $(OutDir)\$(ProjectName).exe 97 | $(QTDIR)\lib;H:\osgearthSDK\lib;%(AdditionalLibraryDirectories) 98 | false 99 | qtmain.lib;Qt5Core.lib;Qt5Gui.lib;Qt5Widgets.lib;Qt5OpenGL.lib;opengl32.lib;glu32.lib;H:\osgearthSDK\lib\osgd.lib;H:\osgearthSDK\lib\osgUtild.lib;H:\osgearthSDK\lib\osgDBd.lib;H:\osgearthSDK\lib\osgGAd.lib;H:\osgearthSDK\lib\OpenThreadsd.lib;H:\osgearthSDK\lib\osgShadowd.lib;H:\osgearthSDK\lib\osgQt5d.lib;H:\osgearthSDK\lib\osgAnimationd.lib;H:\osgearthSDK\lib\osgParticled.lib;H:\osgearthSDK\lib\osgFXd.lib;H:\osgearthSDK\lib\osgTextd.lib;H:\15.birdmap\birdmap\QtGuiApplication1\lib\x64\Debug\QRibbon.lib;%(AdditionalDependencies) 100 | 101 | 102 | .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp 103 | Moc'ing %(Identity)... 104 | .\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtWidgets;H:\osgearthSDK\include;$(QTDIR)\include\QtOpenGL;H:\2.code\gitspace\QRibbon-master;%(AdditionalIncludeDirectories) 105 | UNICODE;_UNICODE;WIN32;WIN64;QT_NO_DEBUG;NDEBUG;QT_CORE_LIB;QT_GUI_LIB;QT_WIDGETS_LIB;QT_OPENGL_LIB;%(PreprocessorDefinitions) 106 | 107 | 108 | Uic'ing %(Identity)... 109 | .\GeneratedFiles\ui_%(Filename).h 110 | 111 | 112 | Rcc'ing %(Identity)... 113 | .\GeneratedFiles\qrc_%(Filename).cpp 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | .\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtWidgets;H:\osgearthSDK\include;$(QTDIR)\include\QtOpenGL;D:\Library\VLD\include;C:\Program Files (x86)\Visual Leak Detector\include;$(SolutionDir)include;$(ThirdIncludeDir) 129 | .\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtWidgets;H:\osgearthSDK\include;$(QTDIR)\include\QtOpenGL;D:\Library\VLD\include;C:\Program Files (x86)\Visual Leak Detector\include;$(SolutionDir)include;$(ThirdIncludeDir) 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | -------------------------------------------------------------------------------- /QtGuiApplication1/QtGuiApplication1.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E} 14 | qrc;* 15 | false 16 | 17 | 18 | {99349809-55BA-4b9d-BF79-8FDBB0286EB3} 19 | ui 20 | 21 | 22 | {D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E} 23 | qrc;* 24 | false 25 | 26 | 27 | {71ED8ED8-ACB9-4CE9-BBE1-E00B30144E11} 28 | moc;h;cpp 29 | False 30 | 31 | 32 | 33 | 34 | Source Files 35 | 36 | 37 | Source Files 38 | 39 | 40 | 41 | 42 | Form Files 43 | 44 | 45 | 46 | 47 | Resource Files 48 | 49 | 50 | 51 | 52 | Header Files 53 | 54 | 55 | -------------------------------------------------------------------------------- /QtGuiApplication1/QtGuiApplication1.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | G:\library\qt\vs_2015_x64_570\5.7\msvc2015_64 6 | WindowsLocalDebugger 7 | PATH=$(QTDIR)\bin%3bH:\osgearthSDK\bin%3b$(PATH) 8 | 9 | 10 | G:\library\qt\vs_2015_x64_570\5.7\msvc2015_64 11 | PATH=$(QTDIR)\bin%3b$(PATH) 12 | 13 | -------------------------------------------------------------------------------- /QtGuiApplication1/Resources/menu/cloudact.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/longyangzz/osgGisMap/ba47202eb226538dcbfe3192eba7ec12da3c1934/QtGuiApplication1/Resources/menu/cloudact.png -------------------------------------------------------------------------------- /QtGuiApplication1/Resources/menu/createLayeract.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/longyangzz/osgGisMap/ba47202eb226538dcbfe3192eba7ec12da3c1934/QtGuiApplication1/Resources/menu/createLayeract.png -------------------------------------------------------------------------------- /QtGuiApplication1/Resources/menu/googlemapact.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/longyangzz/osgGisMap/ba47202eb226538dcbfe3192eba7ec12da3c1934/QtGuiApplication1/Resources/menu/googlemapact.png -------------------------------------------------------------------------------- /QtGuiApplication1/Resources/menu/loadLayeract.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/longyangzz/osgGisMap/ba47202eb226538dcbfe3192eba7ec12da3c1934/QtGuiApplication1/Resources/menu/loadLayeract.png -------------------------------------------------------------------------------- /QtGuiApplication1/Resources/menu/loadTerrainact.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/longyangzz/osgGisMap/ba47202eb226538dcbfe3192eba7ec12da3c1934/QtGuiApplication1/Resources/menu/loadTerrainact.png -------------------------------------------------------------------------------- /QtGuiApplication1/Resources/menu/onlineact.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/longyangzz/osgGisMap/ba47202eb226538dcbfe3192eba7ec12da3c1934/QtGuiApplication1/Resources/menu/onlineact.png -------------------------------------------------------------------------------- /QtGuiApplication1/Resources/menu/settingact.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/longyangzz/osgGisMap/ba47202eb226538dcbfe3192eba7ec12da3c1934/QtGuiApplication1/Resources/menu/settingact.png -------------------------------------------------------------------------------- /QtGuiApplication1/main.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/longyangzz/osgGisMap/ba47202eb226538dcbfe3192eba7ec12da3c1934/QtGuiApplication1/main.cpp -------------------------------------------------------------------------------- /QtGuiApplication1/qribbonMainwindow.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/longyangzz/osgGisMap/ba47202eb226538dcbfe3192eba7ec12da3c1934/QtGuiApplication1/qribbonMainwindow.cpp -------------------------------------------------------------------------------- /QtGuiApplication1/qribbonMainwindow.h: -------------------------------------------------------------------------------- 1 | #ifndef QRIBBONTEST_H 2 | #define QRIBBONTEST_H 3 | 4 | #include 5 | 6 | class QVBoxLayout; 7 | class QRibbonMainwindow : public QMainWindow 8 | { 9 | Q_OBJECT 10 | 11 | public slots: 12 | void action(); 13 | void indexChanged(int tab); 14 | 15 | public: 16 | QRibbonMainwindow(); 17 | ~QRibbonMainwindow(); 18 | 19 | void addOSGViewerWidget(QWidget* wgt); 20 | 21 | private: 22 | void CreateRibbonMenu(); 23 | 24 | private: 25 | QVBoxLayout* m_layout; 26 | }; 27 | 28 | #endif // QRIBBONTEST_H 29 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # osgGisMap 2 | an open demo base on Qt5 and osgearth 、osg 3.6 3 | 4 | ## 第三方osgearth依赖库下载地址 5 | 6 | 链接:https://pan.baidu.com/s/1pKb9Odn9kEoagx8_Jrpksg?pwd=gvrd 7 | 提取码:gvrd 8 | 复制这段内容后打开百度网盘手机App,操作更方便哦 9 | 10 | ## 运行效果图 11 | 12 | ![主界面](./screenshot/mainwindow.png) 13 | -------------------------------------------------------------------------------- /screenshot/mainwindow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/longyangzz/osgGisMap/ba47202eb226538dcbfe3192eba7ec12da3c1934/screenshot/mainwindow.png --------------------------------------------------------------------------------