I've here two template files that you can use with qtcreator.  The first one with, the second one without GUI support. The second one is the bare minimum and can be extended with build rules from the first one with GUI support.  One must keep in mind that the code build is linked always with the virtual dynamic shared object, the C library and the dynamic linker. (Plain assembly projects can omit these libraries but can't or hardly can use qtcreator))
One can play with the options in a .pro file as it suits him or her best, the template below is handy to start with. For example the -no-pie option line can be removed when building position independent executables, like in shared objects etc...


The three libraries shown with ldd on my system:
        linux-vdso.so.1 (0x00007ffc955d6000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f5cdf4be000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f5cdf6a7000)

With C/C++ GUI

QT += core gui
TARGET = qtwidgetnasm

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += c++11

# Create position independed executables
# Some Linux version (Mint) doesn't allow to run applications to run from GUI
# because the apps are treated as libraries instead of executable code
QMAKE_LFLAGS_RELEASE += -no-pie
QMAKE_LFLAGS_DEBUG += -no-pie -O0

# NASM support
QMAKE_EXTRA_COMPILERS += nasm

# -I/nasm/includes/       : path to nasm include files
# -I$$_PRO_FILE_PWD_/inc/ : path to this project include files
NASMEXTRAFLAGS = -f elf64 -g -F dwarf -I/nasm/include/ -I$$_PRO_FILE_PWD_/inc/

nasm.output = ${QMAKE_FILE_BASE}.o
nasm.commands = nasm $$NASMEXTRAFLAGS -o ${QMAKE_FILE_BASE}.o ${QMAKE_FILE_NAME}
nasm.input = NASM_SOURCES

# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \
    main.cpp \
    mainwindow.cpp

HEADERS += \
    mainwindow.h \
    inc/sayhello.inc

FORMS += \
    mainwindow.ui

DISTFILES += $$NASM_SOURCES \

# NASM sources going here
NASM_SOURCES += \
    asm/sayhello.asm

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

Without C/C++ or GUI


QT -= gui
CONFIG -= app_bundle
CONFIG -= qt
QMAKE_LFLAGS_RELEASE += -s -no-pie
QMAKE_LFLAGS_DEBUG += -no-pie
CONFIG -= c++11 console
CONFIG -= app_bundle

TARGET =    # final applicationname

QMAKE_EXTRA_COMPILERS += nasm

# -I/nasm/includes/       : path to nasm include files
# -I$$_PRO_FILE_PWD_/inc/ : path to this project include files
NASMEXTRAFLAGS = -f elf64 -g -F dwarf -I/nasm/include/ -I$$_PRO_FILE_PWD_/inc/

nasm.output = ${QMAKE_FILE_BASE}.o
nasm.commands = nasm $$NASMEXTRAFLAGS -o ${QMAKE_FILE_BASE}.o ${QMAKE_FILE_NAME}
nasm.input = NASM_SOURCES
OTHER_FILES += $$NASM_SOURCES

NASM_SOURCES +=  \
    # nasm sourse files 

HEADERS += \
    # nasm include files