Здесь будут публиковаться бессистемные моменты по Qt, которые могут пригодиться вам, а я смогу не забыть их.

Статьи на сайте

Далеко не весь материал по Qt попадает в эту статью. Посмотрите какие еще есть статьи на тему Qt на моём сайте: /blog/tags/qt/.

Как написать русский текст, чтобы он отображался в Label и др

Если не возиться с универсальностью программы и возможностью перевода на другие языки, то так:

ui->label->setText(QString::fromLocal8Bit("Русский текст"));

Как добавить текст в textEdit

QString A="Your string";

ui->textEdit->insertPlainText(A+"\n");

Как считать значение с lineEdit

QString A;
A=ui->lineEdit->text();

Как перевести строку в число

QString A="3.14";

int x;
x=A.toInt();//в целое число

double y;
y=A.toDouble();//в число с плавающей запятой

Как перевести число в строку

int x=3;
QString A;

A=QString::number(x);

Как сделать иконку для EXE файла

Добавляем иконку с именем, например, myappico.ico в папку с проектом расширения .pro.

И просто допишите в файле проекта .pro:

RC_ICONS = myappico.ico

Как развернуть приложение Qt Quick 2.0 во весь экран

В файле main.cpp строчку надо заменить:

viewer.showExpanded();

И заменяем на:

viewer.showFullScreen();

Как сослаться на элемент в папке с программой в QtQuick 2.0

Через путь file://, например, вот так:

Video {
      source: "file://video01.wmv"
}

Как сослаться на элемент из ресурса в QtQuick 2.0

Через путь qrc:/, например, вот так:

Image {
    source: "qrc:/images/images/bk.png"
}

Как загрузить текстовой файл в QString

Подключите заголовочные файлы:

#include <QDebug>
#include <QFile>

Можно воспользоваться любой из двоих функций:

QString readFile(QString filename)
{
    /*
    Функция считывает текстовой файл в QString.
    Входные параметры:
     filename - имя файла.
    Возвращаемое значение:
     Строка со всем содержимым текстового файла.
    */
    QFile file(filename);
    QString line = "";
    if (!file.exists()) {
        qDebug() << "Не существует " << filename;
    } else {
        qDebug() << filename << " загружается...";
    }
    if (file.open(QIODevice::ReadOnly | QIODevice::Text))
        line = file.readAll();
    file.close();
    return line;
}
QString readFile2(QString filename)
{
    /*
    Функция считывает текстовой файл в QString. Загружает построчно.
    Входные параметры:
     filename - имя файла.
    Возвращаемое значение:
     Строка со всем содержимым текстового файла.
    */
    QFile file(filename);
    QString line = "";
    if (!file.exists()) {
        qDebug() << "Не существует " << filename;
    } else {
        qDebug() << filename << " загружается...";
    }
    if (file.open(QIODevice::ReadOnly | QIODevice::Text)){
        QTextStream stream(&file);
        while (!stream.atEnd()){
           line+=stream.readLine()+"\n";
        }
    }
    file.close();
    return line;
}

Например, так:

QString line;
line = readFile("test.txt");

Как сохранить QString в текстовой файл

Подключите заголовочный файл:

#include <QFile>

И используйте функцию:

void saveFile(QString line, QString filename)
{
    /*
    Функция сохраняет QString в текстовой файл.
    Входные параметры:
     line - содержимое, которое нужно сохранить;
     filename - имя файла.
    Возвращаемое значение:
     Отсутствует.
    */
    QFile file(filename);
    if (file.open(QIODevice::WriteOnly | QIODevice::Text)) {
        QTextStream stream(&file);
        stream << line;
    }
    file.close();
}

Например, так:

QString line="123";
saveFile(line,"test2.txt");

Как получить путь к папке, в которой находится приложение

QString path=QGuiApplication::applicationDirPath();

Как открыть произвольный файл на компьютере через Qt

Подключите:

#include <QDesktopServices>
#include <QUrl>
QDesktopServices::openUrl(QUrl::fromLocalFile(path));

Например:

QString path=QGuiApplication::applicationDirPath()+"/test.txt";
QDesktopServices::openUrl(QUrl::fromLocalFile(path));

Как считать список всех файлов в директории

Подключите заголовочный файл:

#include <QDir>

И используйте функцию:

QString listFilesInDir(QString path)
{
    /*
    Функция считывает список файлов (включая скрытые) в директории в QString.
    Входные параметры:
     path - путь к папке.
    Возвращаемое значение:
     Строка со списком файлов в директории, разделенные n в алфавитном порядке.
    */
    QString line = "";
    QDir dir(path);
    bool ok = dir.exists();
    if (ok)
    {
        dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks);
        dir.setSorting(QDir::Name);
        QFileInfoList list = dir.entryInfoList();

        for (int i = 0; i < list.size(); ++i)
        {
            QFileInfo fileInfo = list.at(i);
            line += fileInfo.fileName() + "\n";
        }
    }
    return line;
}

Как считать список всех директорий (папок) в директории

Подключите заголовочный файл:

#include <QDir>

И используйте функцию:

QString listDirsInDir(QString path)
{
    /*
    Функция считывает список директорий в директории в QString.
    Входные параметры:
     path - путь к папке.
    Возвращаемое значение:
     Строка со списком директорий в директории, разделенные n в алфавитном порядке.
    */
    QString line = "";
    QDir dir(path);
    bool ok = dir.exists();
    if (ok)
    {
        dir.setFilter(QDir::NoDotAndDotDot | QDir::Dirs );
        dir.setSorting(QDir::Name);
        QFileInfoList list = dir.entryInfoList();

        for (int i = 0; i < list.size(); ++i)
        {
            QFileInfo fileInfo = list.at(i);
            line += fileInfo.fileName() + "\n";
        }
    }
    return line;
}

Как сделать так, чтобы при большом цикле в Qt приложение не застывало

Аналог Application->ProcessMessages в C++ Builder или ::Application::DoEvents() в Visual Studio в Qt есть:

QGuiApplication::processEvents();

Например:

int s = 0;
for (int i = 0; i < 1000; i++)
{
    for (int j = 0;j < 1000; j++)
    {
        QString A = "Example";
        s++;
        QGuiApplication::processEvents();
    }
}

Но разумеется, что лучше использовать потоки для этого.

Как получить расширение файла по его имени

Используйте функцию:

QString getExpFromFilename(QString filename)
{
    /*
    Функция получает расширение файла по его имени.
    Входные параметры:
     filename - имя файла.
    Возвращаемое значение:
     Строка значением расширения файла в нижнем регистре.
    */
    QString exp="";
    exp=filename.mid(filename.lastIndexOf(".")+1);
    exp=exp.toLower();
    return exp;
}

Например, можно использовать так:

QString A = "test.txt";
QString B = getExpFromFilename(A);
//B == "txt"

Как перевести QString в QStringList

Используйте функцию:

QStringList qStringToQStringList(QString line)
{
    /*
    Функция переводит QString в QStringList.
    Входные параметры:
     line - строка.
    Возвращаемое значение:
     Список строк.
    */
    QStringList lines = line.split( "\n", QString::SkipEmptyParts );

    return lines;
}

Как перевести QStringList в QString

Используйте функцию:

QString qStringListToQString(QStringList lines)
{
    /*
    Функция переводит QStringList в QString.
    Входные параметры:
     lines - список строк.
    Возвращаемое значение:
     Строка с разделителем \n.
    */
    QString line = lines.join('\n');

    return line;
}

Как добавить в ListView элементы списка

Пример кода показан ниже:

QStandardItemModel *model = new QStandardItemModel;//новая модель списка
QStandardItem *item;//элемент списка

//добавление нового элемента
item = new QStandardItem(QString("TEST 1"));
model->appendRow(item);

//добавление нового элемента
item = new QStandardItem(QString("TEST 2"));
model->appendRow(item);

//соединение модели списка с конкретным списком
ui->listView->setModel(model);

Как получить текст выделенного элемента в ListView

Если нужно узнать текст в произвольном месте программы, то используйте следующий код:

QString Result;//Итоговый результат

QModelIndexList selectedIndexes = ui->listView->selectionModel()->selectedIndexes();
QStringList selectedTexts;//в теории может быть несколько выделенных пунктов списка

//пробегаем по всем элементам списка
foreach(const QModelIndex &idx, selectedIndexes)
{
    selectedTexts << idx.data(Qt::DisplayRole).toString();//выдергиваем наименования значений списка
}

Result=selectedTexts.join(',');//соединяем все найденные элементы

//используем результат
ui->textEdit->insertPlainText(Result);

Если текст нужно узнать из функции клика по самому компоненту ListView on_listView_clicked, то вот пример нужного кода:

void MainWindow::on_listView_clicked(const QModelIndex &index)
{
    QString Result;//Итоговый результат

    //выдергиваем текст
    Result=index.data(Qt::DisplayRole).toString();

    //используем результат
    ui->textEdit->insertPlainText(Result);
}

Как проверить QString на то, что строка пустая

Вот код:

if (Temp.trimmed().isEmpty()) {
//строка пустая
}

Если вы допускаете, что строка может содержать пробелы и так далее, то используйте код:

if (Temp.isEmpty()) {
//строка пустая
}

Как создать папку

Вот код для создания папки:

if (!(QDir(path).exists()==true) ) {
    QDir().mkdir(path);
}

Как скопировать файл

Используйте следующую функцию:

bool copyFile(QString filename, QString dir)
{
    /*
    Функция копирует файл filename в папку dir.
    Входные параметры:
     filename - имя файла (с полным путем),
     dir - путь к папке, куда нужно скопировать файл.
    Возвращаемое значение:
     true - если копирование прошло удачно,
     false - если копирование прошло неудачно.
    */
    QFileInfo fileInfo(filename);
    QString destinationFile = dir + QDir::separator() + fileInfo.fileName();
    bool result = QFile::copy(filename, destinationFile);
    return result;
}

Какой аналог alAlign и TPanel в Qt

Как сделать так, чтобы элементы растягивались под размер окна в Gui Application?

Читайте тут: Аналог Align alClient в Qt Gui Application.

Как поставить режим readonly для textEdit

Пропишите:

ui->textEdit->setReadOnly(true);

Например, в функции:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    ui->textEdit->setReadOnly(true);
}

Как поставить режим readonly для listView

Пропишите:

ui->listView->setEditTriggers(QAbstractItemView::NoEditTriggers);

Например, в функции:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    ui->listView->setEditTriggers(QAbstractItemView::NoEditTriggers);
}

Как исправить ошибку при компиляции при добавлении webView на форму

При добавлении webView на форму возникает ошибка при компиляции:

error: undefined reference to `_imp___ZN8QWebViewC1EP7QWidget'

Откройте файл проекта .pro и данную строчку надо поменять:

QT       += core gui

И замените на строчку:

QT       += core gui webkitwidgets

Как открыть локальный HTML файл через QWebView

Воспользуйтесь строчкой:

ui->webView->setUrl(QUrl::fromLocalFile(path));

path — переменная типа QString. Для открытия файла index.html, находящийся в папке с программой воспользуйтесь кодом:

QString path=QGuiApplication::applicationDirPath() + QDir::separator() + "index.html";

Как в textEdit переместиться к последней добавленной строке

Например, это надо при добавлении новых строк, которые не влезают в окно textEdit. Воспользуйтесь кодом:

QTextCursor c =  ui->textEdit->textCursor();
c.movePosition(QTextCursor::End);
ui->textEdit->setTextCursor(c);

Как узнать длину строки QString

Вот код с функцией:

QString A="Simple;d n;fr;";

int s=A.count();

Как узнать число вхождений подстроки в QString

Вот код с функцией:

QString A="Simple;d n;fr;";

int s=A.count(";");//s==3

Как узнать время работы функции

QTime myTimer;
myTimer.start();

// do something..

int nMilliseconds = myTimer.elapsed();

Как вызвать диалог открытия файла

Для начала подключите модуль:

#include <QFileDialog>

А потом в месте, где вызывается диалог, напишите:

QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"),"",tr("Files (*.*)"));//где пропуск - там путь

Как заменить все вхождения подстроки на другую подстроки в QString

Пример ниже приведен:

QString result="54128961234";

result = result.replace("1","2");

Как заменить только первое вхождение подстроки на другую подстроки в QString

Пример ниже приведен:

QString str("this is a string"); // The initial string.
QString subStr("is"); // String to replace.
QString newStr("at"); // Replacement string.

str.replace(str.indexOf(subStr), subStr.size(), newStr);

Как в Qt Creator продублировать текущую строку

Для этого используется сочетания Ctrl + Alt + Down. Кстати, в Notepad++ аналогичное действие делает сочетание: Ctrl + D.

Как установить Qt

Установка Qt

Установка Qt под Visual Studio, MinGW и для разработки под Android

Как подключиться к базе данных в Microsoft SQL Server 2012 в Qt

Смотрите в статье.

Как вывести данные в tableView в Qt

Смотрите в статье.

Как сделать tableView только для чтения (ReadOnly)

Используйте в самом начале программы (например в конструкторе формы) такой вызов:

ui->tableView->setEditTriggers(QTableWidget::NoEditTriggers);

Как сохранить данные из QTextEdit в ODF

Читать статью.

Как сохранять из QTableView данные в CSV формат

Читать статью.

Как проиграть mp3 файл

Прочитать можно в статье.

Как рисовать графики в Qt

Графики в Qt через QCustomPlot

Как сделать приложение, которое бы не разворачивалось

В main.cpp перед строчкой w.show(); пишем строчки:

w.setWindowFlags(Qt::Dialog);
w.setFixedSize(QSize(466, 485));

Вместо чисел ставите свои размеры окна.

Как добавить в Qt Creator вертикальную линию, показывающую рекомендательную длину строк

Идите в настройки ToolsOptions:

Изменение параметра Display right margin at column

Результат изменения параметра Display right margin at column

Как вывести QMessageBox и узнать его результат

QMessageBox::StandardButton reply;
  reply = QMessageBox::question(this, "Test", "Quit?",
                                QMessageBox::Yes|QMessageBox::No);
  if (reply == QMessageBox::Yes) {
    qDebug() << "Yes was clicked";
    QApplication::quit();
  } else {
    qDebug() << "Yes was *not* clicked";
  }

Как перевести строку в дату

QDate currentDate(QDate::fromString("20090512", "yyyyMMdd"));

Как в statusBar записать сообщение

cpp statusBar->showMessage(tr("Ready")); <ul><li>Qt logo 2016.svg by Qt Project / (2019-01-26)</li></ul>