I was testing with simple qt quick application on android & ios device. For android,memory usage is 31 MB where as for IOS it jumps to 41 MB.
Installing through ministro requires active internet connection.Upon deploying,I see a lot of Qt libraries getting added,can't we remove it?
Installed Qt libraries should only the ones used by your project. See your .pro file and remove unused Qt dependencies (QT flag).
For the size difference, I'm pretty sure deploying on windows will require a different memory usage. It's hard to say why one uses more memory. Every platform and compiler have there specificities and will end up with different binary sizes. There could be some compiler options to optimize by size, but speed peformance will be shown down.
I'm developing a Qt Widgets application and due to compile performance issues, I started developing it in Linux Ubuntu instead of Windows. The problems is that, when compiled and run, the app appears with traditional Ubuntu style instead of Windows (7) style. Since the app is only for Windows, I'ld like to know how can I compile it inside Linux Ubuntu but making it appear with Windows style.
I tried using QApplication::setStyle(QStyleFactory::create("QWindowsStyle")); in main.cpp, without success. I guess the QtAssistant docs just aren't clear enough on how can I do this change. Any help will be appreciated.
Could you by any chance be using a Qt package that is compiled without the style? Can you try running QStyleFactory::keys() to verify that the style exists?
It can't be done, since the style's elements are rendered by Windows (or OS X), not by Qt. Qt's style implementation asks the OS libraries to provide bitmaps of those elements. If you wanted to, you could modify the style to use a disk cache for static items. You could then use the style on all platforms. The problem is that these OS-provided bitmaps are a part of the OS and thus non-redistributable.
The only plastform-specific style that at least used to be available everywhere was the old Windows 95 style, in times of Qt 3. I'm not sure what its current status is.
First check out put of QStyleFactory::keys()
then set the look by calling
qApp->setStyle("Windows");
This command will give you windows 98 look. If you want windows vista look you should configure qt sources with -style-windowsvista and rebuild all sources.
UPDATE
according to http://doc.qt.io/qt-5/qstylefactory.html#details qt style is not platform independent. So IT IS IMPOSSIBLE to have that native look in not windows platform. It's worth mentioning that in windows also Windows SDK itself is required in order to build sources of Qt otherwise your application will look like windows 98 in windows 7.
How can I stop this warning in Qt 5.4.1 in Debug/Release mode.
QOpenGLContext::swapBuffers() called without corresponding makeCurrent()
It only appears in debug mode, but release mode is fine with VS2010.
It appears in both modes (Debug & Release) with QtCreator.
I have tried so many ways to remove it but no success, searched google but couldn't find any useful info.
Plateform: Windows 8.1- VS2010- Qt_Creator Nvidia GTX 765
Thanks.
Serious answer: By filing a bug report with the Qt developers. Calling SwapBuffers on a drawable without a OpenGL context bound to it is perfectly fine. Actually SwapBuffers does not belong to the OpenGL context but to the window, so having that method placed in QGLContext is a big design failure itself.
Personal rant (in the hope some Qt devs are going to see it, eventually):
These guys (like every other toolkit developer community I got the impression) really need some summer school in how OpenGL works and what you should and should not do. I know of no toolkit that gets OpenGL context management right. If developing a toolkit wasn't such a huge amount of work I'd go "Fine, I'll develop my own GUI toolkit, with Blackjack and hookers…"
You should fix your code, instead of suppressing warning. You may show an SSCCE, if you want some hints from community.
But if you still want to suppress warnings, you need to follow Qt documentation
please bear in mind I am not a GUI programmer.
As the title says but to give a little more details:
I have a very large C++ application which I would like to upgrade the GUI for. There is an SDK that we can attach a new GUI onto and I would like to make it look as modern and fancy as possible, I have been advised to use HTML5 for this.
We build and link the project using in house bat files which I have hooked into MSDEV to save me going back to the console every time I want to build the project. I also use MSDEV to attach to the programs when they are running to debug.
Can I also do this in QT?
(I cannot download it and try as I need to have a business case for downloading new software and investigation is a hard one to get approved).
If I did this in QT, could I then use Webkit to create a HTML 5 front end or is there more work required?
What Does Qt Look Like
http://www.youtube.com/watch?v=bVQ0S-b5lDs
The demo program that comes with the Qt SDK shows off quite a bit of what you can do with the GUI programming. You can build almost anything you can imagine!
It looks native to the operating system it is running on, Windows 7, Mac OSX, Ubuntu, etc.
I believe most of the Linux KDE GUI is now done through Qt.
Running Console Applications
If you need to run things from the console, you can manage that in C++ pretty easily.
system("run_this.bat");
In Qt, if you don't need to see the console window, you can run most things as a QProcess.
There are ways to hook the stderr and see what is going on as well.
HTML 5
Something written in HTML 5 shows up in a browser, and there are a number of slick graphics and effects that can be used with it, but using the QtWebKit, will only ensure that the webpage you are rendering looks the same on every computer you run it on. Most modern browsers are becoming HTML 5 compliant, so relying on the HTML 5 out of Qt shouldn't be necessary.
W3Schools gives a pretty good introduction into what HTML 5 adds to websites:
http://www.w3schools.com/html/html5_intro.asp
Using HTML 5 or C++
Writing a web application that uses HTML 5 versus writing a Desktop application that uses a native GUI are two very different things.
Running files on a local machine is pretty sandboxed when going through a browser with HTML 5. If you are okay with running something remotely on your own server, then it shouldn't be too bad.
I run Flex Builder 3 on a mac and as my project grows - the compile time gets longer and longer and longer. I am using some SWC's and there is a fair amount of code but it shouldn't take minutes to build and crash daily should it?
First of all, comments on some of the response:
There is no need to explicitly specify -incremental in Flex Builder because it uses incremental compilation by default.
-keep-generated-actionscript is a performance killer because it instructs the compiler to write out AS3 codes generated for MXML components in the middle of the compilation. File I/O in the middle of a compilation means unnecessary pauses and low CPU utilizations.
-optimize slows down linking because it instructs the linker to produce smaller SWFs. Note that -optimize=true|false doesn't have any effect on building SWCs because SWCs are libraries and have to be unoptimized.
I rarely mess with JVM settings because JVM knows its jobs well and tunes itself quite well at runtime. Most people make matter worse by setting various GC tuning parameters. That said, there are 3 settings most people understand and set correctly for their usage:
-Xmx (max heap size)
-server or -client (HotSpot Server or Client VM)
-XX:+UseSerialGC or -XX:+UseParallelGC (or other non-serial GC)
-server consistently outperforms -client by about 30% when running the Flex compiler.
-XX:+UseParallelGC turns on the parallel garbage collector. ideal for multicore computer and when the computer still has CPU cycles to spare.
You may also want to check out HellFire Compiler Daemon (http://bytecode-workshop.com/). It uses multiple processor cores to compile multiple Flex applications at the same time. You can also run the compiler on a second machine via sockets (assuming that your second machine has faster CPUs and more memory).
In my opinion, use more modules than libraries and use HFCD.
Hope this helps.
-Clement
There's no need to use mxmlc on the command line just to be able to add compiler flags. Right click your project in the Flex Navigator, select Properties and then Flex Compiler in the dialog that appears. There you can add any extra compiler flags.
Not sure that there's very much to do though, more code means more compile time, that's just the way it is. If you're not doing a release build (or whatever it's called in Flex Builder) it's unlikely that your compiler settings include optimize to begin with. Better choices to try would be -incremental (which only recompiles the parts that have changed) and -keep-generated-actionscript (which stops the compiler from deleting the ActionScript files it has generated from your application's MXML files).
I very much prefer using mxmlc on the command line (by way of Ant) compared to Flex Builder. Although I don't think that the latter compiles any slower, it feels more sluggish in every way. Using Ant also makes it possible to do more than just compilation when building, and conditional compilation (only compile a SWF or SWC if the source code has actually changed). Check out a blog post of mine for more info on that.
What you could try is the Flex Compiler Shell, another command line tool that can speed things up. Basically it tries to keep as much as possible in memory between builds, so no need to wait for things like the JVM starting up (the Flex compiler is a Java application). On the other hand this is sort of what Flex Builder does anyway.
In addition to the suggestions already mentioned, close any projects that you have open that you are not using.
Rich click on the Project in the Navigator view and select "Close Unrelated Projects".
Depending on how many projects you have open, this can lead to a significant improvements in compile time, as well as all around performance.
mike chambers
mesh#adobe.com
Slow compile time is most often caused by having large numbers of embedded resources ([Embed] or #Embed).
Option 2 on this article might help you: [http://www.rogue-development.com/blog2/2007/11/slow-flex-builder-compile-and-refresh-solution-modules/]
I created RAM Disk with workspace and it gives up to 10% of better compilation time. Not much, but something.
You want at least 4 gigs on your computer if possible, and make sure to override the default memory settings that eclipse/flexbuilder gives to the application.
If you're not sure how to do this, you can find the flexbuilder app in /Applications, right click and choose "Show Package Contents". Then go into the contents file and edit the eclipse.ini file. Edit that file have memory settings of at least:
-vmargs -Xms768m -Xmx768m -XX:PermSize=128m -XX:MaxPermSize=128m
It's also worthwhile to go into the eclipse/flexbuilder preferences and to check the "Show heap status" box under Windows->Preferences->General (This is in eclipse with the FB plugin, I'm assuming it's also there for standalone FB).
This shows the current memory in the lower right of the window and has a little trash icon so you can force garbage collection.
I'd also suggest turning off automatic building of the project when your files change (you can force a build with cmd-B).
We had a huge project with quite a few modules files and performance in FlexBuilder 3 was decent with these steps.
Go to Project->Properties->Flex Applications. All of the applications listed are compiled each time (even though you have a default set). If you remove everything but the default (don't worry, it won't delete the actual files), it only compiles the default app. This resulted in a significant speed up for me. If you change your default app, it ADDs it to the Flex Applications list - adding to your compile time. You will need to maintain this list to get the quickest compile.
I always disable "automatic compile" for Flex. It compiles too much, takes too long, and so interrupts my work.
If you have many different project files and all of those needs to be recompiled, but you also have other projects open and don't want to close them always you're doing a build, you can also use Eclipse Working Sets.
Unfortunately, the default Flex Navigator does not support working sets. But you can open the Package Explorer with Window / Show View / .... Click on the little white downward arrow to the topright and select Top Level Elements: Working Sets. You can then add Working Sets (aka groups of projects). Each project needs to be in at least one working set ("Other Projects" being the default), but can be in several.
Now with Project / Build Working Set / ... you can instruct Eclipse to build all the projects in this working set, but none of the others. This is especially useful if you suspect your project references to be sometimes broken - otherwise building the 'topmost' project should trigger subsequent builds automatically.
As Clement said, use the HellFire Compiler Daemon. If you have multiple modules and more CPU cores on your machine it can compile them in parallel. Another option is to use IntelliJ (the commercial version) which offers the same feature.
The SDK 4.x.x introduced silly bug (see Adobe bugsystem, issue FB-27440), which causes projects with SVN or CVS meta data compile much slower than with SDK 3.x.x. On how it can be fixed, see here.
You may want to explore the command-line compiler found in the Flex SDK, mxmlc. As I recall, Flex Builder 3 seems to hide all the compiler details, but perhaps there are arguments you can append that will help you speed up the compilation.
For example, you may want to set optimize=false which will skip the step of optimizing the bytecode (perhaps reducing compilation time)? This of course comes at the price of performance and file size of the actual application.
More documentation on mxmlc can be found at: http://livedocs.adobe.com/flex/3/html/compilers_13.html.
Good luck!
I don't use Flex Builder, but I use the Flex SDK compiler everyday and I was wasting tons of time waiting for the MXMLC compiler to do its job until I found Flex Compiler SHell:
http://blog.zarate.tv/2008/12/07/theres-something-called-flex-compiler-shell/
Although in theory Flex Builder already uses this optimizations, might be worth checking.
You can use WORKING SETS to compile just a set of your components that are part of the application that you are changing and not the whole project
http://livedocs.adobe.com/flex/3/html/help.html?content=build_6.html
Usually the first build takes the longest, and then it's pretty quick after that. That's using Vista x64 w/ core 2 duo.
Otherwise, I am nearly certain a Intel Core i7 Extreme Edition 965 3.2GHz upgrade processor would speed your Flex building up nicely .. :) :) :)