Using Qt with 3ds Max Plug-ins

Starting with 3ds Max 2017, you can use the popular cross-platform development package Qt to create the user interface for your 3ds Max plug-in. See the maxsdk\include\Qt directory for headers exposing utilities for integrating Qt, as well as some customized Qt widgets used in the 3ds Max UI. Some of the standard plug-ins shipped with 3ds Max use Qt for their UI, and you can look at these in the SDK samples collection. Look at the maxsdk/samples/systems/sunlight project for an example of a plug-in that uses Qt for its UI.

NOTE:Qt exposure in 3ds Max is still a work-in-progress, and some of the APIs (custom widgets) provided in maxsdk\include\Qt are still in development and supplied for experimental purposes only. These APIs will change in future releases, and should not be used for production. See the comments in the headers.

3ds Max uses a patched version of Qt 4.8.5. Before you can create new plug-ins or build existing ones that require Qt, you need to obtain the patched Qt, either by downloading a pre-built package, or by building it yourself from the patched Qt source.

Getting and Configuring the pre-built minimal Qt for 3ds Max

If you do not want to build your own copy of Qt, you can download and use a pre-built package. Note: you will still need to build the Qt Visual Studio add-on if you wish to create your own Qt UIs.

  1. Download the package from the Autodesk Developer Network 3ds Max page.
  2. Unpack the package, and rename it from Minimal_ADSK_Qt\Minimal_ADSK_Qt\ to Qt\4.8.5, and move the resulting Qt directory under your maxsdk.
  3. Edit the property sheet under maxsdk\ProjectSettings\propertySheets\3dsmax.general.project.settings.props, and change the QT-related macro definitions to point at the MaxSDK install directory:
    <QTDIR>$(MaxSdkDir)\Qt\4.8.5\</QTDIR>
    <QtInc>$(MaxSdkDir)\Qt\4.8.5\include\</QtInc>
    <QtLib>$(MaxSdkDir)\Qt\4.8.5\binary\win_vc14\x64\lib\</QtLib>
    <QtMigrateLib>$(MaxSdkDir)\Qt\4.8.5\QtApps\qtwinmigrate\2.8\binary\win_vc14\x64\lib\</QtMigrateLib>

You should now be able to open and build the Qt-based samples, such as samples\systems\sunlight.