Cross Platform Graphical User Interfaces in C++
Вставка
- Опубліковано 26 чер 2024
- In this video I challenge the notion that Graphical User Interfaces and C++ just simply dont mix, by installing the cross platform wxWidgets framework and having a play! I show the full install and setup procedure and a simple application to get started.
Im quite aware of the abundance of different frameworks, and make no claims that one is better than any other. Choose the tools that are right for your situation.
www.wxwidgets.org
Source: There isn't any really as you need wxWidgets to make it useful. However if you need it, shout out in the comments and I'll post a link
UA-cam: / javidx9
/ javidx9extra
Discord: / discord
Twitter: / javidx9
Twitch: / javidx9
GitHub: www.github.com/onelonecoder
Patreon: / javidx9
Homepage: www.onelonecoder.com - Наука та технологія
14:31 "and then click build"
> clicks build
"but before you click build and this is really important"
> heart drops
"go and make yourself a cup of coffee"
> heart starts beating again
Lmao 😂 Fam! I is dead!! ☠️☠️💀
Same lol!
Make coffee first, then click build. Gotcha. Wouldn't want to be *too* efficient :D
sameee!!!
me too
I find most tutorial videos almost impossible to sit through. They're either aimed too low, assuming the viewer is a complete newbie, or too high, assuming the viewer is an (insert latest framework here) acolyte. You are the refreshing exception. An outlier, no less. The content is without fluff or fat, and your presentation style is comfortable and never, ever, condescending. The editing is perfect for the content and your whiteboard presentations never grate. Your style is engaging and you never stray far from the point. The jokes are subtle and never grate. You are never anything other than yourself. I hardly ever write comments but today I felt the spirit. Congratulations on producing a most splendid channel and long may you love doing what you're doing, and passing that love on to us. Thank you.
Thank you Charlie, those are kind words and very much appreciated. Thank you very much!
I am making a cross platform GUI API.
It's not complete yet, just implemented some buttons and text box with scroller. It's ready for use.
Its not good enough for a sophisticated application but it's colourful. As colourful as modern websites.
Its almost the same in style like this one :- ua-cam.com/video/x3tIHhRwDPU/v-deo.html
It has more features than the one shown in the video link above.
i think so and appreciate javidx for teach this to us
@@braindeveloperdimensional5579 This looks interesting, is it for C also?
@@chriswinslow It's in C and can be used for C and C++.
I’m a lower level programmer with a year or so experience in GUI programming. This video struck a perfect balance of high level concepts, and low level implementation. Instant sub!
Thanks Alan!
@@javidx9 Hello , as regular viewers of the channel would know !!
Hello! 😄
@@javidx9 AAAAAAA , REPLYYYYYY ,
May be low level language are faster exicution and better result because of the close to the hardware
2:20 - "Three million years ago" 🤣
I recommend making a cup of coffee AFTER clicking “build” button ;)
or even better: use the build button to run your coffee machine at the same time :D
Apparently you need to a cup of coffee so that you don't miss a line of compilation.
@@KaaBockMehr One of the best uses of a pre-build script feature
@ÖnîÖns Cut, Lots of bugs afterward! :)
@@KaaBockMehr Good idea, just make sure to support other drinks too:
template
Cup& cup_of(const T&);
"I've never used a Mac."
I see you are a man of culture as well.
this comment... is. amazing.
and circlejerky too
Optimus27 average consumers
mac for stupid people
Ok homeless cheap android user 😂
I was just wondering yesterday how to add a GUI to my program, so the timing of this video was absolutely perfect.
Excellent! I hope it helps!
i am so jealous of this generation of new developers who get to benefit from stuff like this. you make some amazing content and i wish you were around when i was first trying to learn software engineering.
I was pissed when he used x and y in that nested for loop. This comment made by i and j gang
lol
don't you forget k and n sir!
Ah yes a man of culture, I see.
Where is 'i' and 'ii' gang at?
@@penguin2251 So you have chosen death
Awesome tutorial! One of the very few times I've been able to sit through a lengthy tutorial without falling asleep and actually have everything work as described, too.
I really wish you had more time to make more videos! They are incredibly well thought out and insightful, and you actually put in the effort to explain why you make certain decisions.
For example, I was able to (semi) easily translate your Asteroids game into C to run on a Linux embedded system/FPGA device with external peripherals for a school project last semester. I'm able to go from 0 to 100 quickly when learning from your videos. Thank you!
Thanks Austin, Im pleased you got asteroids working embedded. Great Stuff!
I've searched far and wide for C++ related tutorials(video) for a developer who is good at C#, Java, Python, Web Frameworks, ..., and found very little results which satisfied me. They all start at vars, loops, ... and then they conclude at stl(most of the times).
Finally, at long last, found someone who's teaching advanced stuff. Thank you for the tutes!
Have a great day
Totally love this tutorial!!!
First time using Visual Studio(downloaded 2019 uninstalled, then installed 2017 for same look,
First time using wxWidgets,
First time using C++.
From compiling wxWidgets to memory leak at the end which I figured out how to fix.
Everything works!!!
Great Job!!!
Good luck learning C++, it's a lot, but it's doable. Was my first programming language too.
A heads up about the next community showcase video, if you want some of your projects featured in a video get them ready! I'll release submission details in due course. Im also looking to fill the onelonecoder.com website with a gallery of submissions.
"Why won't it bloody compile?" is often the giant step of disheartenment for me for new libraries and frameworks.
Most of them work out of the box, when it doesn't your environment is not properly set up or you didn't follow instructions correctly. Other times you really have to fix something on your PC, Environment or the code itself.
Same here but I'm starting to get the hang of fixing the issue which is usually setting up the library and include paths. Still learning...
And then it's a-holes like Felype that make it even worse! Search for help and you'll get useless discouraging "I'm better than you" nerd talk from 4 billion strangers
@@edwardgibbon2557 thats a lot of programmers.
nodejs modules work most of the time
Fab video as always sir. Don’t know how you manage to hit the sweet spot but I totally dig the level of detail you cover whilst still keeping it accessible.
I hope you will continue with this series because I use wxwidgets and I often have difficulty understanding. You are great, another precious video. Thanks a lot.
Thanks Leonardo, I think I will, this video had a great response!
My God, the feeling when you said "but wait, before you click build, and this is very important..." literally a second after I clicked build cannot be described by words
This is extremely useful, thank you. I i like how you break down what you're doing, and also explain why. I find that too often tutorials, simply inform us which buttons to click without really providing any detail. Thanks again!
Bravo. I loved the comment about programmers working on large libraries having to spend a lot of time on managing build setup. Most if not all of the professional projects I have worked on involved hundred if not thousands of files and the compile times were measured in minutes (more than 60 sometimes). Thanks for the reality check.
What an amazing tutorial, exactly what I needed. Many thanks!
I took one look at the GUI code generated by Visual Studio and backed away slowly, not taking my eyes off it until I was a safe distance away. Then I closed and did not save.
You should have also rebooted your system, just in case...
Why is that?
The boilerplate for windows and linux are both aids and cancer and gonorrhea of the eyes
I never understood, even as a new programmer; why they raped the language like that.
@@didaloca I never understood why they had to redefine every single variable type. What's wrong with int*? Why is PINT better?
Pure gold! I've used a bit of tkinter in python and this felt very familiar. What a great jumping off point for more complex c++ projects!
Just getting back into C++ after a long hiatus. I remember using MFC way back in 'the day' and have spent a bit of time exploring the current GUI landscape when I stumbled across your channel. Thank you so much for this video, it presents wxWidgets at a level I can appreciate. So I've already started the 'batch build' on this sdk and looking forward to using it.
I'm learning a lot from your videos! thank you. I do not speak English very well but you explain yourself clearly :)
That's great and thanks Orphein!
The way you code it on the fly makes it look easily feasible, honestly following the code I really didn't see how 45mn went on. Very clear and well explained. Great thanks for the time and effort spent on this, and for efficiently sharing practical knowledge the way you do. Hell I did sub and hit the bell!
Hey cheers Debbahi!
Great video thank you, I've spent the last 2-3 days looking for a good explanation of the concept, you managed to clear up some confusion!
Your tutorials accompany me through every lonely night, thank you!
Nice tutorial. Glad to see how other frameworks do it since I've only used qt quick
No mom, I'm not procrastinating
HAHAHAHA reading this 2 hours before my exam.. damn..
@SweetTea Thank you, bro. strange , but it kinda helped )))
taking the ACT tommorow :D
r/madlads
My first time trying to learn c++ started with me opening the default window application, looking at the wall of code, and going immediately to java. I've since decided java isnt my cup of tea for a paticular program i am working on, and this video has given me hope once again.
just wanted to add my voice to the praise you have received for this video. It has been extremely clear and has been a much needed resource for me. Thank you!
Just in time i needed for my work! ty
Good stuff!
Thank you very much! C++ is the only language I have any handle on, and I've been wanting to write an app with a GUI for a couple years now. Finally I can! I followed your instructions and everything compiled and ran, start to finish, ending with mine-sweeper. Cheers!
I’m loving this series! 👍 Can’t wait for the next video.
Wow, thanks for the great tutorial. Your style of explaining makes it easy to understand things even without any previous knowledge.
Lately, I have been getting quite pissed at the courses I'm taking in my masters degree of computer science, specifically the software track because even though I've been studying computer science for 5.5 years now, I have never learned how to create any actual software, from GUI's to proper back ends, to proper databases, and how to properly connect them all in a secure way for actual deployment. Nor have I been taught how to properly make any modern website, webapp, mobile app, game, system etc. And I have been having so many deadlines and assignments that are more research-oriented that I have no energy or time left to learn these things on my own time. Since yesterday I have had a bit of free time and finally decided to try to make my first GUI desktop app. However, for some reason information on this topic is so hard to get by online, there are no main hubs where I can find information it seems, so this video picked my interest. I liked the approach to showing some different options and giving some context, which is what I wanted. So, thanks for that
I am the complete opposite. I've never been to college but I've created a great number of full-stack software applications on many platforms that have had tens of thousands of users.
Just as I need to have the discipline to attend courses and do assignments, you're going to have to try to find a way to make time to create applications.
Honestly, Windows Presentation Foundation (WPF) using C# is what I would start with. There are many WPF books that go step by step to create a full fledged desktop program. That is how learned; I bought programming specific books (WPF Unleashed as example) and just followed along page by page.
Once you learn with the simpler WPF with C# advanced frameworks will make more sense. Using c++ with a custom GUI library is not a favorable way to learn.
Good luck and take care
@Rationalistic course you are, but hey this is UA-cam comments, you can be whoever you like.
You are studying computer SCIENCE, not web design.
... and that is why I bailed from grad school. Also, most of the faculty considered the PC a fad and only used them to access the mainframe.
@Rationalistic technical universities in Europe aren't as bad imo. The syllabus is mostly relevant, the time commitment isn't that high, tuition free for Europeans and very affordable even for intl students. I had to spend less than 25 hours weekly last sem for all coursework combined..
I was wondering why no one talks about a cross-platform C++ gui... and you come with this video! You are incredible!
I am making a cross platform GUI API.
It's not complete yet, just implemented some buttons and text box with scroller. It's ready for use.
Its not good enough for a sophisticated application but it's colourful. As colourful as modern websites.
@@braindeveloperdimensional5579 sounds amazing
Because it's not possible anymore. The cross-platform toolkits are all design state of the art of 2003 (XP). Can't even handle animations from 2009 (Win7). There is no way then writing the gui client native. Try stuff like recycle view controller.
@@braindeveloperdimensional5579 The first steps are always fucking easy and then you realize it's futile and doesn't scale.
There's plenty of frameworks that allows you to create cross platform GUI's using native elements. en.wikipedia.org/wiki/List_of_platform-independent_GUI_libraries
Phenomenal video javid. Hope to see more of these.
dude. i find it funny that anytime i need something random always your videos pop up to save me 😂
Besides from making me interested in GUI programming, you just taught me how to play mineswepper by understanding how its code works.
I've been using Qt for cross platform Windows and Linux C++ development for nearly 12 years now (C++ & Qt self tough) but I'm always open to learning about other available technologies. Going to try and develop for macOS next once I get hold of one.
Wow.. you've uploaded this just in time.
I'm trying to learn wxwidgets just this month for my little kiddy project.
Hi ! I have to admitt that I like very much how you present all these programming subjects. It is on top of my favourite channels !
Oh dear sweet God and Jesus that mess at 18:40 takes me back to when I was learning the Win32 API in x86 Assembly...
woah, RE pro?
Oh nice, I'm doing that right now
"I've never used a Mac"
..
I love you
Well I have used a Mac and, indeed, they're awful. Windows is way better but Linux is easily better than those two added together. I have plans to jump to Linux sometime in the future.
@@mrcxx8694 I disagree but ok
@@rezneba101 Both opinions are respectable! Linux is better at most things, Windows has it's uses though!
@@gutoguto0873 yes yes this is correct and macs are totally useless
Why your code and his is ugly. Windows nerd..
BIIIIGGGGG THUMBS UP! I've always been on the lookout for a channel exactly like this! UA-cam has blessed me today!
I'm a complete new person in software. Just getting done with a transfers. And THANK YOU SO MUCH FOR THIS VIDEO. I feel like whenever I ask people "What's next after the backend of my projects are pretty solid?" they give me either a very vague answer or an answer that goes way above my skill level. And this video I feel like I get a good crash course on the next step where I know what to learn on. This might be an older video so maybe this is outdated but for my inexperienced self its a great jumping off point.
Staunch Qt C++ developer here, and I've done Qt for ~10 years. I still love it, but your low-sodium pitch on Wx has me interested. Great video.
qt looks terrible in windows and os/x compared to wx
Not all Heros wear cape! keep this compartment of wisdom!!
I love the way you explain the reasoning behind things. Thank you and I hope you keep making videos.
Thank you so much, I was a bit lost trying to install wx by myself!
This channel and the Cherno = love.
"... and printing stuff - for those that still print things."
Can I just say thank you!!
I've spent a while building some code that does a bunch of small quality of life things that I needed to do while I was working on my honors project last year and now I'm finished I wanted to wrap it in a GUI so that it's more user friendly, I realised when I got to the end of the project converting it all to python would probably have been easier than trying to figure out GUI with C++. I had a brief encounter with MFC before deciding that I was not going to be able to figure that out (documentation is dense, and not a lot of great examples).
Then your video pop's up on my radar, I'm up and running in a day and able to just get on with it. Thank you so much, trying to find a framework is hard enough without tutorials teaching you to set everything up just to stop before showing you any code and leaving you high and dry. This was the perfect amout of technical detail for me to just dive right in and the code examples wx widgets offers looks like enough to get everything that I need off the ground. Honestly have no idea how much easier you have made my life. Hats off to you Sir. :)
Thanks for spending the time on this, I found it very useful and will be watching the sequel, also looking to compile this on WSL and Raspberry PI to see how it looks.
Thanks Bryon, I must confess ive not tried wx on an rpi before, I assume it should be ok, but im curious now :D
15:00 There's actually a few programs that overcome this issue, it's called "CCache" and "DistCC", we use those at my office. It reduced compile times from about 45 minutes to just 5 minutes. Another thing to consider is the MSVC compiler is much slower than GCC.
A quick tip :) First start build process 10:30 then watch first ten minutes of video
I have had a dip into GTK and even xcb before, and I must say I am very pleased by the tiny amount of boilerplate code needed to create a wxWidgets program. Thank you!
Cool!
Great video, highly recommend, was looking around for a couple of days at different cross-platform GUI solutions for C++. All seemed to complicated, with this video I had a functional GUI in a couple of hours.
For anyone else having a bunch of build errors popping up, my solution was to enable the "Windows 10 SDK" under the "Visual Components" tab in the Visual Studio installer.
Well you see, my laptop is slow so I was able to have 2 cups of coffee instead of one
Im currently relearning everything from before enlistment and really enjoy your videos. Thank you !
Hey that's great Kurijomo!
Thank you. Your videos and thorough explanations fill many of the nooks and crannies of my non-understanding.
13:34 It should be noted that Visual Studio 2017 = Visual Studio Version 15.x
You had me at "it's like applying a cheese grater to one's buttocks."
Excellent introductory video! Just what I looking for
Great stuff, thanks for doing these videos!
I expected something different but that's quite good too
I always really liked QT as a framework, I'm mainly a C# programmer but I felt quite a home in QT as the bindings are easy and just make sense. Not to mention the documentation is excellent which cannot be said for many C++ frameworks :)
I've used Qt framework for years and just recently got a bug up my nose to try out other frameworks. I haven't seen anything yet that convinces me to move away from Qt. The amount of "plumbing code" to get up and running in Qt seems less than for other frameworks.
I admit that alarm bells went off when I saw "windows ID" being used with the wxFramework. Visual Studio v6's resource IDs were the bane of my existence for trying to share code between projects. I've never had issues with sharing Qt code between projects (which does not have resource/window IDs).
They're optional in wx, sometimes useful, but mostly you bind to the control directly now. Well for last 10 years anyway.
Thanks a lot! Helped me to make up my mind about what framework to work with c++ GUI. Congrats!
Thank you. A very easy to follow tutorial. I have sent the link to a friend who is just beginning in C. Cheers.
Just a correction: the wx solution name (wx_vc15.sln) doesn't mean Visual Studio 15, but it stands for the version of Visual Studio in the Installer, which is 15.x.x for Visual Studio 17, 16.x.x for VS19 etc...
"Some of us just love C++ so much that that's the language we are going to stick with"... I love your channel! I'm a recent graduate in computer science and C++ is BY FAR my favourite language. I'm at page 353 in "The C++ Programming Language" book. Keep the great videos coming! C++ for life!
I'm currently reading this book, I feel frustrated every time I read it because there are a lot of things that I can't get even though I know C and have a good knowledge about OOP from C# and JAVA , I'm in part 1 ''A Tour of C++'', should I keep reading it ?
@@shehabbadawy9523 it's not a book for beginners in c++
@@kevinstefanov2841 i know
I wanted to ask you if it paid off at the end
@@shehabbadawy9523 i would say there are better books. Lately i've gone to manuals and online courses instead of books cuz books tend to be dry. Right now im doing the "Learn Assembly Language by making games for the Atari" course on Udemy, reading my second book on C called "Extreme C" and reading a really cool manual about C/C++ optimizations by Agner Fog (he actually has a bunch of manuals but the rest are even more technical). In my opinion books are too slow - you can get the same amount of knowledge or even more with a tenth of the time by doing the right online courses and finding the right manuals. Also, I want to add that I've switched to C now, not C++ anymore. C is way better. Right now i'm working on Xen Hypervisor for my job and it's really fun. It's made mainly in C.
@@kevinstefanov2841 wow nice, well c is my main language but didn't make any real project with it except a trivial airport system and using it in problem solving questions
Can u suggest some projects to do with it
Thank u very much for replying
I was writing test tools at an internship using wxwidgets, GTK and QT. That was 13+ years ago... I'm floored that these are still the defacto best choices for a portable GUI in C++.
That lesson just flew by. Very interesting.
Thank you.
Great video! Really makes me appreciate cross-platform applications that have a proper GUI.
Any chance you could put the source code into your GitHub repo?
"I've never used a Mac."
Hey I'm finally subscribing.
I... don't know what to say
@@___xyz___ if you don't know what to say then I don't know why you felt the need to say it
@@whoeverofhowevermany the need to say I didn't know what to say came from knowing that saying I'm not knowing is better knowing than explicitly saying doubtfully that being optimistic about ignorance is ignorant
@@___xyz___ welcome to the core logic of language
@@whoeverofhowevermany welcome to the world of computers :-)
Very informative and interesting tutorial, thanks!
always here to like the videos
Compiling on (Arch) Linux requires gcc, wxgtk3, and wxgtk-common. run: "g++ cApp.cc cMain.cc -Wall $(wx-config --cxxflags --libs) -o App"
For anyone wondering why evt returns errors: make sure you used an ampersand (&), not a dollar sign ($) in the declaration =) At least in my case, that was the only problem.
btw I am so happy that I have finally started with frameworks ! (bought already a book dedicated wxWidgets in my native language). It is like a new motivation for me for programming because all the time in the console I was a little bit bored but this is like a refresh for my mind :)
Haha I just love that guy, funny and knows his things! Great video.
"Let's make mines sweper"
I see you are a mind reader !
I've been using native windows APIs for GUIs for year after seing this I may switch to WX.
your humor slips in subtly now and then and now I'm on my couch laughing at computer jokes on Saturday night
Thanks a lot. I first tried using VSCode but yeah... that was way too much configuration for some hobby free time project. I don't want to spend my whole free time configuring.
Simple, clear, it works, I'm happy, thank you.
Qt and Wx are also one of the best GUI development frameworks for Python as I am originally a Python Developer (not professional but pro) and I am learning C++ for GUI development because I think Python is not for GUI and I learned that C++ is also not for GUI but if I have learned it I will stick to as I am stuck to Python.
Long story short: Qt and Wx are also one of the best GUI development frameworks for Python.
yes and if you add something like wxwidgetsbuilder or dialogblocks you get to a proototype even faster... (or qtcreator for qt)
12:36 Vulkan, hmm, are we going to see something about Vulkan at some point?
I am excited if this happen. I am learning vulkan and making my own wrapper while at it, I learn and develop.
That would be awesome!
Thanks for the video. My professor told me to code some algorithms in C++, so I started to learn wxWidgets for the GUI. Now I will go read the official book..
Very useful video, thank you for uploading this.
2:20 😂😂😂 3 million years ago
This is my forst time in this channel. As soon I heard "I never used a Mac before" I clicled that subscribe button.
What is a “forst” and a “clicled”? And bravo! 👏 Do you feel like one of the cool kids now that you’ve announced your baseless hate for people that don’t share your platform preference?
dude your videos are insane you are a god
This is great! Your video allows us to side-step about 3 weeks of agony. Thank you.
"I recently had a look into Java - and that's become a complete mess." LOL
Error 111: Out of coffee. Continue with tea bags? (Y/N)
Absolutely. In fact, coffee is what one should drink only once they have has depleted their tea bags.
Then you have error 418 ;)
Very neat and simple explanation! Thank you.
I love this video! GUI makes sense now! Thank you so much!