category_name=articles
Attending iOSDevCamp 2010 – Building Meet4Drinks
August 19, 2010 | Leave a Comment
![]()
I am attending the yearly iOSDevCamp event this weekend in SanJose, CA. This is a great event where iPhone/iPad software developers and UI/UX designers come together for a weekend of coding and exploration of ideas around how to use iOS devices. The event organizers hold something called a Hackathon where attendees form ad-hoc teams around shared application ideas and spend two full days designing and coding like crazy to build something cool. Everyone has a great time and meets like-minded folks in the developer community.
Earlier this year, in April the event organizers held a special iPadDevCamp. That was my first exposure to this great event format. You can read more about that experience over on the Powered By AMP blog. For that event I was on a team with some co-workers from Auctiva. We built a prototype of an e-commerce sales management tool for AMP sellers.
This time I’m attending solo, without a cadre of other Auctiva designers and developers. I want to explore developing location-aware applications for the iPhone and put together a basic idea for an app. It is called Meet4Drinks, and you can read more about it at http://www.meet4drinks.net.
If it sounds like something you would enjoy, it’s not too late to register today. The event starts tomorrow (Friday) evening and goes through Sunday evening. Visit http://www.iosdevcamp.org to register.
Look for updates on Meet4Drinks next week, once my head is back above water after the event. Hope to see you there.
iPad as Technical Book Reader? Absolutely!
May 1, 2010 | Comments Off
I have been lugging around technical books for the last 20+ years as part of my profession. The pace with which technology changes means there is a constant stream of new topics to study and that usually means buying books. The thing about many of these technology books is you don’t read them like a pleasure book. You tend to use them as a reference while you climb a new learning curve. It goes kind of like this:
- Microsoft, Apple or someone else releases a new operating system or application. => More books
- Open source tools like Subversion, Git or whatever gains in popularity. => More books
- Start developing in a new language (Ruby, Python, Objective-C, …) => More books
The end result is that my garage is always full of books that either describe out of date technology or are still current but not relavent for the projects I am working on at the moment. Worst still, the books I am currently using usually end up weighing many pounds and take up a lot of room.

The difference between carrying around a bunch of paper books and an e-book reader is huge. This stack of books weighs in at 31.8 lbs. Compare that with an iPad that has most of the same books loaded onto it and weights just 1.8 lbs. I know which one I am going to be carrying in my backpack.
Early last year when Amazon released the Kindle2 I purchased one hoping to get rid of this problem by switching to e-books instead of paper books. I did a survey of the technical e-books available and it looked promising. Most of the books I was either currently using or would likely be interested in were now available from Amazon in an e-book version. Amazon made it possible for the Kindle to also read the mobi format so that meant I could also get books from The Pragmatic Programmer and O’Reilly.
You know what they say about the best laid plans and all that. The Kindle worked as advertised. I switched almost exclusively to e-books on the Kindle. The problem was, many of these technical books include figures or illustrations that are in color and the Kindle did an awfull job of displaying them. To make matters worse, you couldn’t change the orientation of the Kindle (no landscape mode) so images that didn’t scale well could not be viewed by rotating the device. This was almost enough for me to go back to paper books.
Flash forward about a year and the rumors were flying about Apple building a tablet/slate of some sort. Would it be a book reader, a netbook computer, a movie viewer or what? No one knew for sure but everyone was speculating. Then the announcement came that Apple would hold a special event to announce “Something they have been working on”. My Kindle2 went up on craigslist that day (about a week before the special event was held) and I sold it the next day. I love craigslist; it just works! The ironic part is I sold it to a software engineer who works for Apple.
We all know what happened next. Steve told us all what we needed (an iPad) and when we would be giving him our money. I listened, reserved one for pickup on the release day and the rest is history. Apple ships the iPad with an e-book reader called iBooks and they have an on-line bookstore where you can purchase e-books. Amazon shipped a Kindle reader for the iPad that uses wifi to sync with the Kindle on-line bookstore.
Here is a picture of my new 1.8 lb iPad that makes an excellent technical book reader.

All of my existing Kindle books transfered over to the iPad without any trouble. The Pragmatic Programmer books I had were all in the mobi format which the Kindle software on the iPad cannot read. No problem – I just downloaded the epub format of the same books from the Pragmatic Programmer on-line bookstore.
Publishers sell their e-books in one or more of the following formats:
- PDF – Adobe format that permits publishers to lock the content down with DRM. In some cases they can be very restrictive about which applications you are able to read the books in. My advice is to avoid purchasing e-books from publishers who use this format unless they are DRM-free and also offer one of the following formats. There just isn’t any reason for you to be locked into PDF when the iPad is such a great reader.
- mobi – A mobile electronic book format that was very popular when the PocketPC and Palm were in their hayday. You can read mobi files with the Kindle device, but not with the Kindle software on the iPad.
- epub – Modern electronic book format. Supported in the Apple iBooks application. This is the best choice for an open format on the iPad right now. I favor epub over other formats. A very nice feature of the iBooks applications is the ability to search through books.
- Amazon – Proprietary format from Amazon. The Kindle reader software for the iPad is excellent so if a book is only available from the Kindle store I go ahead and purchase it there with no regrets. The only downside right now is the lack of a good search feature in the Kindle software. Hopefully they will be correcting this in an update.
As an aside, everyone should make their e-books available like the folks at PragProg do. When you buy a book from them you get it in three formats (PDF, mobi and epub). This means you can read your book on basically any electronic device of your choosing. O’Reilly is almost as good.
To round things out here are a couple pictures of the user interface of iBooks and Kindle Reader for iPad.
This first two images are of the iBooks software. The image on the left illustrates the support for color and the nice page turn animations help you forget that this is not paper after a while. As is typical of most Apple user interfaces, this one has excellent usability. On the right you have a look at the search feature as implemented in the iBooks application. I have found that it works well, but is a bit slow. I would like to see Apple improve on the performance in an update.
The next image is of the Amazon Kindle for iPad software. Here I am showing you what the controls are like for selecting a font size and adjusting the background color and brightness. As I mentioned earlier, the main thing missing from the Kindle software is a search feature.
I would really like to have all my e-books in a single reader. Being forced to keep some in iBooks and others in the Kindle application really sucks, but I’m not holding my breath for a solution anytime soon.
Technical books are often used as references. Neither of the e-book reading applications do a good job with letting you keep multiple books open and rapidly switch between them. It would really improve the usefulness of the applications if you could keep more than one book open and use a multi-touch gesture to switch between them.
If you don’t have an iPad yet, run (don’t walk) to your nearest Apple store and pick one up. You won’t regret it.
iPad Review – First 24 hours
April 5, 2010 | Comments Off
My experience with it so far is mixed. Like you I tried to touch-type on the keyboard and that really didn’t work at all. I have tried to do the two finger plus thumbs approach and am not that fast typing like that. The keyboard is big enough that I find it kind of weird to hold it in one hand and type with the other. My hand has to move too far to get all the keys unlike on the iPhone where everything is much closer together. I have not tried to hook up a bluetooth keyboard yet either. I expect that to work much better for things like typing e-mails.
I ended up purchasing the 64GB version instead of the 16GB version. The change was based on a recommendation I heard on MacBreak Weekly. They mentioned that based on their preview use (had it for about a week before April 3rd) they feel that if you are going to use it to read books then you will easily fill the 16GB and then have to pick/choose which items to sync to your iPad. With the 64GB version you can just dump all the books/PDFs you want on it and not worry about running out of space.
I have the Kindle for iPad application on it and pulled down all my Kindle books. Very cool! It just works! I also downloaded the iBooks application from the App Store. That application reads the ePub format. I have purchased a number of technical books in the past few years from Pragmatic Programmers. All of their books are available in ePub format so I downloaded that version and loaded them into the iPad too.
So far I really like having all of my technical books in one place like this. I have not tried reading out in full sunlight, but expect it will be an issue. For reading indoors it works fine. Not as easy on the eyes as the Kindle, but it shows all of the technical illustrations in the books in full color which is much better.
I purchased the Pages, Numbers and Keynote applications from Apple also. They really show off the sort of things you can accomplish with the iPad, but the crash a lot. I feel more like a beta tester of these apps than just a user. Sort of a let down, but then I have been here before with other Apple products. Eventually these will be great applications.
With the iPad I also purchased the Apple case for the iPad. I was really surprised when I opened it up at home. The quality of the case is really bad. It only cost $39, but it sucks compared to the case that Amazon sells for the Kindle. After about 2 hours of using the iPad in the case I got so annoyed with it that now I am using the iPad without a case. I am shopping for a different case now.
I have had Safari crash on me more than once now on the iPad. It seems like the crashes were always on very long (lots of scrolling) web pages so maybe it is a memory issue. I’m not sure, but the end result is you are just reading along on the page and all of a sudden you are back to the menu of icons wondering how you got there.
Even more surprising than the crashes of apps on the device is the crash I experienced this morning of the Xcode development environment on the desktop. Apple released an update to Xcode that includes all of the iPad development tools yesterday. I was working on a sample application this morning, following the instructions on how to build an app when all of a sudden Xcode just up and crashed on me. This is very unusual. Earlier versions of Xcode have been very stable for years.
Over all I think purchasing one as a developer at this point is a good move, but for basic consumers it is probably more sensible to wait about 3 months before jumping on the iPad bandwagon.
HOWTO: Answer the question “Is {some site} up or down?”
June 28, 2009 | Comments Off
I just stumbled on a very cool service that helps you answer the question “Is {some site} up or down?” It couldn’t be simpler. Visit http://downforeveryoneorjustme.com and you will see a very simple form that looks like this:
Enter the name of a site and the folks running the site will go check and see if it is possible to visit the site from their location on the net. If the site is reachable you will see something like this:
If it is not reachable you will see something like this:
Better than Google: Real answers for Programmers, System Administrators and IT Professionals
June 7, 2009 | Comments Off
Technology is more complex now than ever. It seems like the diversity of topics a programmer, system administrator or IT professional must have some familiarity with grows exponentially. In the office it is all to common to hear someone say “Did you google it?” or “I found a post that looks like it might be related on google.” when trying to sort out complex technology issues.
Google is good, but real people working together, sharing their experience with each other and documenting the results for others to take advantage of works even better. Two sites that should be in every technologists bookmark list are stackoverflow and serverfault.
You can think of these sites as social networking communities with very focused areas of interest. Anyone can post a question to a site, anyone can provide an answer, and everyone votes on the best answers. Comments can be added to questions or answers, folks develop “street cred” by providing useful answers and eventually become recognized by their peers as knowledgeable on specific topics.
Stack Overflow is a collaboratively edited question and answer site for
programmers – regardless of platform or language. It’s 100% free, no
registration required.
Server Fault is a collaboratively edited question and answer site for system
administrators and IT professionals – regardless of platform. It’s 100% free,
no registration required.
Nokia places Qt under LGPL License – Sweet!
January 14, 2009 | Comments Off
I have been a big fan of the Trolltech Qt Framework for a number of years. It is a fantastic way to build high quality cross-platform desktop applications in C++. For the past six years it seems like every project I work on has included a rich desktop GUI application of some sort. Each time this need would arise I would start the process of selling the idea of using the Qt Framework for the project. The biggest hurdle was always the per-developer cost for the commercial license of the framework. I would hear things like
Just use MFC. It’s free and we don’t really see a need for the application to be cross-platform anyway.
or sometimes I would hear
Use the GPL version of Qt and just keep it under the radar until we are sure the application will be released to our customers.
It was always frustrating to try and make the case that Qt was a better solution than MFC for UI, was more comprehensive for general development than other frameworks, and that it was worth planning for the possiblity of releasing the applications for Linux or Mac as well as Windows. In the end each project did adopt the Qt Framework, but it really was a distraction to try and justify the use.
Thankfully with the purchase of Trolltech by Nokia we are seeing a change in the licensing terms for the Qt Framework. Starting with the 4.5 release it looks like the framework will be placed under the LGPL license making it much easier to adopt as part of commercial development efforts.
Here are a couple links that discuss the development further:
and you can read the news directly from Nokia on the Qt Licensing Terms page.
This new development on the licensing front and the recent inclusion of WebKit into the Qt Framework make me very optimistic about a long and prosperous future for developers who know the Qt Framework! Thank you Nokia!
Software Design: Want vs. Need
January 13, 2009 | Comments Off
I am always surprised at how short-sighted some folks are who design software. It seems like there is no shortage of people who feel that you just have to listen to your customers to build great software. In my experience, if all you do is build what the customer says he/she wants then your software will likely be obsolete in a year (maybe even less time) and your customers will ultimately be very unhappy with you.
To build great software you have to listen intently to what the customer is saying so you can identify the pain and suffering that usually lies unexpressed just below the surface of comments like “All I need is a widget that does X.”
Check out what BusinessWeek magazine had to say about this phenomenon:
“It’s really hard to design products by focus groups. A lot of times, people don’t know what they want until you show it to them.”
– BusinessWeek, May 25 1998
Probably my favorite quote about building great software came from someone on the team that built the NeXT computer. I think they really understood what it takes to build quality systems (software and hardware) that last.
“It took us three years to build the NeXT computer. If we’d given customers what they said they wanted, we’d have built a computer they’d have been happy with a year after we spoke to them – not something they’d want now.”
– Someone on the NeXT Team
It all comes down to making a decision to apply your knowledge and understanding of technology to address the immediate problems for the customer and to push beyond so you can give the customer a system they can grow with. The ultimate measure of success is when a user says “Hey, now I need to do Y with the widget.” and you can reply with something like “Okay, this is how you do that with the system we built.” If you find yourself replying with something more like “Hmmm, we could add that to the software but it will cost you.” then you are doing it wrong!
Setting up Unit Testing in Xcode 3.1
July 28, 2008 | 2 Comments
Xcode includes OCUnit, so you don’t need to get a copy. But, you might want to take a look at their website (http://sente.epfl.ch/software/ocunit/) for information and tutorials on how OCUnit is intended to be used.
If you are planning on doing Test Driven Development (TDD) you may also want to get the following packages:
- OCMock – OCMock is an Objective-C implementation of mock objects. (http://www.mulle-kybernetik.com/software/OCMock/)
- Hamcrest – library of matchers for building test expressions (http://code.google.com/p/hamcrest/)
Other good articles on Xcode Unit Testing that I came across:
- Unit Testing with OCUnit – http://www.macdevcenter.com/pub/a/mac/2004/04/23/ocunit.html?page=1
- Test Driving Your Code with OCUnit – http://developer.apple.com/tools/unittest.html
- Xcode unit testing articles – http://chanson.livejournal.com/tag/unit+testing
- Unit Testing with Xcode – http://www.stiefels.net/2007/05/01/unit-testing-with-xcode/
By reading through the documents references above I was able to get OCUnit up and running for one of my projects. It took a bit of experimentation, but in the end it looks like OCUnit will work just fine for doing TDD in Xcode with Objective-C. Anyone wanting to try out TDD should give it a try. The benefits for your project are significant. Go for it!
Use QImage to create a composite image (i.e. One image with another overlaid on top of it.)
March 19, 2008 | Comments Off
Today I wanted to combine two images of similar size to create a new image. The new image was going to be used for a toolbar button. I have purchased a set of commercial images in the PNG format for use on application toolbars. The set came with a bunch of overlay images that could be used to modify each of the base images. The overlays included things like arrows, warning signs, arrows, people, etc. My first though for using these images was to fire up Adobe Illustrator and just create a new icon by merging the base and overlay together. Then I realized that Qt could do the job for me at runtime, and with a little work I could dynamically overlay different badges on a base icon.
The code below can be used to construct a composite image. You pass in references to a base image and an overlay image. These images are used to construct a third image, and that is returned to the caller.
QImage createImageWithOverlay(const QImage& baseImage, const QImage& overlayImage)
{
QImage imageWithOverlay = QImage(baseImage.size(), QImage::Format_ARGB32_Premultiplied);
QPainter painter(&imageWithOverlay);
painter.setCompositionMode(QPainter::CompositionMode_Source);
painter.fillRect(imageWithOverlay.rect(), Qt::transparent);
painter.setCompositionMode(QPainter::CompositionMode_SourceOver);
painter.drawImage(0, 0, baseImage);
painter.setCompositionMode(QPainter::CompositionMode_SourceOver);
painter.drawImage(0, 0, overlayImage);
painter.end();
return imageWithOverlay;
}
Here is an example of using this routine to create an image that might be used to represent something being transfered from a network attached machine.
QImage baseImage(":/Resources/connect_pc_64.png");
QImage overlayLogoff(":/Resources/overlay_arrow_east_64.png");
QImage logoffImage = createImageWithOverlay(baseImage, overlayLogoff)
The two source images and resulting composite are shown below.
- :/Resources/connect_pc_64.png
- :/Resources/overlay_arrow_east_64.png
- Generated Composite Image



HOWTO – Use Visual Studio 2005 for Qt Open Source Development
February 14, 2006 | Comments Off
THIS IS A WORK IN PROGRESS. EXPECT UPDATES AND DON’T BE SURPRISED BY INCOMPLETE INFORMATION
Trolltech has released Qt 4 under a dual-license for all supported platforms. In earlier versions of Qt they only released the open source version for Mac and Linux, leaving Windows developers with no choice but to purchase a commercial license. That all changed with the release of Qt 4 when Trolltech started to provide an open source version for Windows development too! The only catch was that Trolltech only supports the MinGW GCC compiler for development using the open source version.
This article describes how to patch Qt 4 open source edition on Windows so you can develop using Visual Studio 2005. You can even develop using the free Express edition of Visual Studio 2005 so long as you also install the latest Platform SDK.
Please keep in mind that these patches and tips are not provided so you can get around the very generous Trolltech dual-license terms of use. If you are developing or intend to develop a commercial application using Qt 4 you must purchase a commercial license for Qt 4. Only use the information provided in this article if you wish to develop open source GPL software for the Windows platform and wish to use the Microsoft Visual C++ 2005 compiler instead of the MinGW GCC compiler.
Download Qt 4.1 Source Code, Patches, and Notes
- Download the latest open source Windows version of Qt 4.1 from Trolltech at http://www.trolltech.com/download/qt/windows.html. Unzip the file to C:\. It will extract all of the files into a sub-directory called qt-win-opensource-src-4.1.0.
- Download the latest patch file used to modify the open source version of Qt 4.1 to support Microsoft Visual Studio 2005 from Source Forge at http://sourceforge.net/projects/qtwin/. Unzip the file to C:\qt-win-opensource-src-4.1.0.
- Download the build script, environment setup and notes from http://www.idevelopsoftware.com/downloads/qt/Qt41WinBuildScript.zip. Unzip the file to C:\qt-win-opensource-src-4.1.0.
- If you don’t already have Visual Studio 2005 you can download the Express edition. You will also need to download the Platform SDK.
http://msdn.microsoft.com/vstudio/express/visualC/default.aspx
http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/default.aspx
Building Qt 4.1 using Visual C++ 2005
Open C:\qt-win-opensource-src-4.1.0 in Windows Explorer.
Double-click on the “Qt 4.1 Command Prompt” shortcut to open a Command Prompt window with the environment setup for Qt 4.1 development. IMPORTANT: You must already have Visual Studio 2005 installed. You may need to edit setenv.cmd if your copy of Visual Studio 2005 is not in the default location.
Run “installpatch41.bat”
This will patch the Qt 4.1 source code so it builds properly using the Visual C++ 2005 compiler.
Run “build.cmd”
This will build all of the Qt 4.1 libraries, utilities, and sample applications using the Visual C++ 2005 compiler.
To rebuild, if necessary, make sure to first clean up the previous build. Do this by running
nmake distclean
from the C:\qt-win-opensource-src-4.1.0 directory.
External Tools Configuration in Visual Studio 2005
Launch Visual Studio 2005 and select the “External Tools…” item from the Tools menu.
Use the “Add button to define each of the following external tools:
Title ……………….. QMake (Project File Generation Mode)
Command ……………… D:\qt-win-opensource-src-4.1.0\bin\qmake.exe
Arguments ……………. -project -spec win32-msvc2005
Initial directory …….. $(ProjectDir)
Use Output window …….. [X]
Treat output as Unicode .. [ ]
Prompt for arguments ….. [ ]
Close on exit ………… [X]
Title ……………….. QMake (Makefile Generation Mode)
Command ……………… D:\qt-win-opensource-src-4.1.0\bin\qmake.exe
Arguments ……………. -makefile -spec win32-msvc2005
Initial directory …….. $(ProjectDir)
Use Output window …….. [X]
Treat output as Unicode .. [ ]
Prompt for arguments ….. [ ]
Close on exit ………… [X]
Title ……………….. Qt Designer
Command ……………… D:\qt-win-opensource-src-4.1.0\bin\designer.exe
Arguments …………….
Initial directory …….. $(ProjectDir)
Use Output window …….. [ ]
Treat output as Unicode .. [ ]
Prompt for arguments ….. [ ]
Close on exit ………… [ ]
Title ……………….. Qt Assistant
Command ……………… D:\qt-win-opensource-src-4.1.0\bin\assistant.exe
Arguments …………….
Initial directory …….. $(ProjectDir)
Use Output window …….. [ ]
Treat output as Unicode .. [ ]
Prompt for arguments ….. [ ]
Close on exit ………… [ ]
Adding a Qt 4.1 Development Toolbar
Add a new toolbar for Qt 4.1 Development by selecting “Customize…” from the Tools menu. Once the “Customize” dialog appears select the “Toolbars” tab and press “New…” For the toolbar name enter “Qt 4.1 Development” and press “OK”.
Select the “Commands” tab on the “Customize” dialog. Select “Tools” from the “Categories:” list. Scroll down in the “Commands:” list until you see “External Command 7″. Drag commands 7, 8, 9, and 10 onto the new “Qt 4.1 Development” toolbar.
Creating a New Visual Studio 2005 Project
Open the “New Project” dialog by selecting File->New->Project… from the menu. Under “Project types” on the left side of the dialog expand “Visual C++” and then select “General.” The right side of the dialog will display a list of all the general project types. Select “Makefile Project” from the list of project types. Provide a name for the project and set the location on disk where you wish the project to be saved. Be sure not to check “Create directory for solution”, as this will create an extra level of directories that is just confusing. Click the “OK” button and you will be presented with the “Makefile Application Wizard.” Simply press the “Finish” button on the first page of the wizard.
Once the project has been created and opened, set the NMake Configuration Properties for the project as shown below. In the “Solution Explorer” right-click on the name of your project. Select “Properties…” from the context menu. On the property pages dialog select “Configuration Properties” and “NMake” on the left side tree control. On the right side, enter the following information, making sure to set the properties for both the debug and release configurations.
Release Configuration Settings
General
——-
Build Command Line …………………. nmake release-all
Rebuild All Commaond Line …………… nmake release-clean release-all
Clean Command Line …………………. nmake release-clean
Output ……………………………. foo.exe
IntelliSense
————
Common Language Runtime Support ……… No Common Language Runtime support
Preprocessor Definitions ……………. WIN32;NDEBUG;UNICODE;QT_LARGEFILE_SUPPORT;QT_DLL;
QT_GUI_LIB;QT_CORE_LIB;QT_THREAD_SUPPORT
Include Search Path ………………… “c:/qt-win-opensource-src-4.1.0/include/QtCore”;
“c:/qt-win-opensource-src-4.1.0/include/QtGui”;
“c:/qt-win-opensource-src-4.1.0/include”;
“c:/qt-win-opensource-src-4.1.0/include/ActiveQt”;
“c:/qt-win-opensource-src-4.1.0/mkspecs/win32-msvc2005″
Forced Includes …………………….
Assembly Search Path ………………..
Forced Using Assemblies ……………..
Debug Configuration Settings
General
——-
Build Command Line …………………. nmake debug-all
Rebuild All Commaond Line …………… nmake debug-clean debug-all
Clean Command Line …………………. nmake debug-clean
Output ……………………………. food.exe
IntelliSense
————
Common Language Runtime Support ……… No Common Language Runtime support
Preprocessor Definitions ……………. WIN32;_DEBUG;UNICODE;QT_LARGEFILE_SUPPORT;QT_DLL;
QT_GUI_LIB;QT_CORE_LIB;QT_THREAD_SUPPORT
Include Search Path ………………… “c:/qt-win-opensource-src-4.1.0/include/QtCore”;
“c:/qt-win-opensource-src-4.1.0/include/QtGui”;
“c:/qt-win-opensource-src-4.1.0/include”;
“c:/qt-win-opensource-src-4.1.0/include/ActiveQt”;
“c:/qt-win-opensource-src-4.1.0/mkspecs/win32-msvc2005″
Forced Includes …………………….
Assembly Search Path ………………..
Forced Using Assemblies ……………..
QMake Project Settings
Create a project file called “foo.pro” in the directory for your makefile project. Replace the name “foo.pro” with the name of your actual application. Place the file in the directory where your Visual Studio project was created. To start with, the contents might look something like this:
CONFIG += qt
TEMPLATE = app
SOURCES += foo.cpp
HEADERS += foo.h
FORMS += foo.ui
You should be off and running now. For more detailed information I would suggest reading the qmake reference manual. You might also want to take a look at the Qt 4.1 tutorials in Qt Assistant. Have fun!





