Skip to content

Instantly share code, notes, and snippets.

@horatiu-udrea
Created June 13, 2019 19:34
Show Gist options
  • Save horatiu-udrea/befccb715fbd22677c5308bfa1566376 to your computer and use it in GitHub Desktop.
Save horatiu-udrea/befccb715fbd22677c5308bfa1566376 to your computer and use it in GitHub Desktop.
CLion Live Templates for Qt framework (.CLion2019.1\config\templates\)
<templateSet group="Qt">
<template name="qtmake" value="cmake_minimum_required(VERSION 3.13)&#10;project($PROJECT_NAME$)&#10;&#10;set(CMAKE_CXX_STANDARD 14)&#10;set(CMAKE_AUTOMOC ON)&#10;set(CMAKE_AUTOUIC ON)&#10;set(CMAKE_AUTORCC ON)&#10;set(CMAKE_INCLUDE_CURRENT_DIR ON)&#10;&#10;file(GLOB headerFiles &quot;*.h&quot;)&#10;file(GLOB sourceFiles &quot;*.cpp&quot;)&#10;file(GLOB resourceFiles &quot;*.qrc&quot;)&#10;find_package(Qt5Widgets CONFIG REQUIRED)&#10;&#10;include_directories(${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}_autogen/include)&#10;&#10;add_executable(${CMAKE_PROJECT_NAME}&#10; main.cpp&#10; ${sourceFiles}&#10; ${headerFiles}&#10; ${resourceFiles}&#10; )&#10;&#10;target_link_libraries(${CMAKE_PROJECT_NAME} Qt5::Widgets)" description="Qt project CMakeLists file" toReformat="true" toShortenFQNames="true">
<variable name="PROJECT_NAME" expression="" defaultValue="&quot;ProjectName&quot;" alwaysStopAt="true" />
<context>
<option name="CMAKE" value="true" />
</context>
</template>
<template name="qtmain" value="#include &lt;QtWidgets/QApplication&gt;&#10;&#10;int main(int argc, char** argv)&#10;{&#10; QApplication application{argc, argv};&#10; $END$&#10; return QApplication::exec();&#10;}" description="Qt main source file" toReformat="false" toShortenFQNames="true">
<context>
<option name="OC_DECLARATION_CPP" value="true" />
</context>
</template>
<template name="qtui" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#10;&lt;ui version=&quot;4.0&quot;&gt;&#10; &lt;class&gt;$CLASS_NAME$&lt;/class&gt;&#10; &lt;widget class=&quot;QWidget&quot; name=&quot;$CLASS_NAME$&quot;&gt;&#10; &lt;property name=&quot;geometry&quot;&gt;&#10; &lt;rect&gt;&#10; &lt;x&gt;0&lt;/x&gt;&#10; &lt;y&gt;0&lt;/y&gt;&#10; &lt;width&gt;400&lt;/width&gt;&#10; &lt;height&gt;300&lt;/height&gt;&#10; &lt;/rect&gt;&#10; &lt;/property&gt;&#10; &lt;property name=&quot;windowTitle&quot;&gt;&#10; &lt;string&gt;$CLASS_NAME$&lt;/string&gt;&#10; &lt;/property&gt;&#10; &lt;/widget&gt;&#10; &lt;resources/&gt;&#10; &lt;connections/&gt;&#10;&lt;/ui&gt;&#10;" description="Qt UI file" toReformat="false" toShortenFQNames="true">
<variable name="CLASS_NAME" expression="fileNameWithoutExtension()" defaultValue="&quot;Widget&quot;" alwaysStopAt="true" />
<context>
<option name="XML" value="true" />
</context>
</template>
<template name="qth" value="#ifndef $CLASS_NAME$_H&#10;#define $CLASS_NAME$_H&#10;&#10;#include &lt;QWidget&gt;&#10;&#10;namespace Ui&#10;{&#10; class $CLASS_NAME$;&#10;}&#10;&#10;class $CLASS_NAME$ : public QWidget&#10;{&#10;Q_OBJECT&#10;&#10;public:&#10; explicit $CLASS_NAME$(QWidget *parent = nullptr);&#10;&#10; ~$CLASS_NAME$() override;&#10;&#10;private:&#10; Ui::$CLASS_NAME$ *ui;&#10;};&#10;&#10;#endif // $CLASS_NAME$_H&#10;" description="Qt widget header file" toReformat="true" toShortenFQNames="true">
<variable name="CLASS_NAME" expression="fileNameWithoutExtension()" defaultValue="" alwaysStopAt="true" />
<context>
<option name="OC_DECLARATION_CPP" value="true" />
</context>
</template>
<template name="qtcpp" value="#include &quot;$CLASS_NAME$.h&quot;&#10;#include &quot;ui_$GENERATED_CLASS_NAME$.h&quot;&#10;&#10;$CLASS_NAME$::$CLASS_NAME$(QWidget *parent) :&#10; QWidget(parent),&#10; ui(new Ui::$CLASS_NAME$)&#10;{&#10; ui-&gt;setupUi(this);&#10;}&#10;&#10;$CLASS_NAME$::~$CLASS_NAME$()&#10;{&#10; delete ui;&#10;}" description="Qt widget source file" toReformat="false" toShortenFQNames="true">
<variable name="CLASS_NAME" expression="fileNameWithoutExtension()" defaultValue="" alwaysStopAt="true" />
<variable name="GENERATED_CLASS_NAME" expression="decapitalize(fileNameWithoutExtension())" defaultValue="" alwaysStopAt="true" />
<context>
<option name="OC_DECLARATION_CPP" value="true" />
</context>
</template>
<template name="qtread" value=" QFile file{$FILE_NAME$};&#10; if (!file.open(QIODevice::ReadOnly))&#10; {&#10; QMessageBox::critical(nullptr, &quot;File not found&quot;, &quot;The data file was not found&quot;, QMessageBox::Ok);&#10; }&#10; QTextStream in{&amp;file};&#10;&#10; $COLLECTION$.clear();&#10; while (!in.atEnd())&#10; {&#10; QString line = in.readLine();&#10; QStringList fields = line.split(QRegExp{&quot;$REGEX$&quot;});&#10; $ENTITY$ $ENTITY_VARIABLE${$FIELDS$};&#10; $COLLECTION$.push_back($ENTITY_VARIABLE$);&#10; }&#10; emit dataChanged(index(0), index($COLLECTION$.size() - 1));" description="Qt way of reading a CSV file" toReformat="true" toShortenFQNames="true">
<variable name="FILE_NAME" expression="" defaultValue="&quot;fileName&quot;" alwaysStopAt="true" />
<variable name="COLLECTION" expression="" defaultValue="&quot;collection&quot;" alwaysStopAt="true" />
<variable name="REGEX" expression="" defaultValue="&quot;; *&quot;" alwaysStopAt="true" />
<variable name="ENTITY" expression="" defaultValue="&quot;Entity&quot;" alwaysStopAt="true" />
<variable name="ENTITY_VARIABLE" expression="decapitalize(ENTITY)" defaultValue="&quot;entity&quot;" alwaysStopAt="true" />
<variable name="FIELDS" expression="" defaultValue="&quot;fields[0]&quot;" alwaysStopAt="true" />
<context>
<option name="OC_EXPRESSION_CPP" value="true" />
</context>
</template>
</templateSet>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment