Privacy policyContactsAbout siteOpinionsGitHubDonate
© EVILEG 2015-2018
Recommend hosting
TIMEWEB
I
Jan. 22, 2019, 1:45 p.m.
IscanderChe

Всем добрый день.

Суть задачи: надо, чтобы в одной из колонок QTableView вместо хранимого в QSqlTableModel значения выводился чекбокс и при смене состояния чекбокса значения в базе тоже менялось. С помощью ItemIsUserCheckable проблему удалось решить.

Есть ли вариант решения с помощью кастомного делегата? У меня получается только частично: чекбокс виден только при щелчке на ячейку, данные исправно меняет, но при переходе к другой ячейке чекбокс заменяется данными.

class CheckBoxDelegate : public QStyledItemDelegate
{
    Q_OBJECT

public:
    CheckBoxDelegate(QObject* parent = 0);

    QWidget* createEditor(QWidget* parent, const QStyleOptionViewItem& option,
                          const QModelIndex& index) const override;

    void setEditorData(QWidget* editor, const QModelIndex& index) const override;
    void setModelData(QWidget *editor, QAbstractItemModel *model,
                      const QModelIndex &index) const override;

    void updateEditorGeometry(QWidget *editor,
            const QStyleOptionViewItem &option, const QModelIndex &index) const override;
};
QWidget* CheckBoxDelegate::createEditor(QWidget* parent,
    const QStyleOptionViewItem& option,
    const QModelIndex& index) const
{
    if(index.column() == 1)
    {
        QCheckBox* editor = new QCheckBox(parent);
        return editor;
    }

    return QStyledItemDelegate::createEditor(parent, option, index);
}

void CheckBoxDelegate::setEditorData(QWidget* editor,
    const QModelIndex& index) const
{
    if(index.column() == 1)
    {
        int value = index.model()->data(index, Qt::EditRole).toBool();
        QCheckBox* checkBox = static_cast<QCheckBox*>(editor);
        checkBox->setChecked(value != 0);
    }
}

void CheckBoxDelegate::setModelData(QWidget* editor,
    QAbstractItemModel* model, const QModelIndex& index) const
{
    if(index.column() == 1)
    {
        QCheckBox* checkBox = static_cast<QCheckBox*>(editor);
        bool value = checkBox->isChecked();
        model->setData(index, value, Qt::EditRole);
    }
}

void CheckBoxDelegate::updateEditorGeometry(QWidget* editor,
    const QStyleOptionViewItem& option, const QModelIndex& index) const
{
    editor->setGeometry(option.rect);
}
Jan. 22, 2019, 7:16 a.m.

Qt

Qt, QML, Visual Studio, Releases

Qt Visual Studio Tools 2.3.1 были выпущены для Visual Studio Marketplace.

Jan. 22, 2019, 7:08 a.m.

Qt

qtcreator, Qt, Releases

Qt Company анонсировала выпуск Qt Creator 4.8.1

Jan. 21, 2019, 11:48 a.m.

Qt

QML, Qt, Quick

Компания Qt уже давно использует такие тесты, как QMLBench, которые помогают нам узнать, когда изменение вызывает снижение производительности, но также важно видеть, как Qt работает на более высоком уровне, позволяя компонентам взаимодействовать таким образом, чего детальные тесты, такие как QMLBench не могут нам показать этого. В этой статье мы рассмотрим результаты тестирования запуска нового приложения из более реального приложения для тестирования QML.

Jan. 19, 2019, 10:08 a.m.
Михаиллл

Добрый день. Как документ RTF конвертировать в HTML? Могу его открыть и прочитать так:

    QString file = QFileDialog::getOpenFileName(0, "Выберете резюме hh.ru", "", "*.rtf");
    if(!file.isEmpty())
    {
        QFile sFile(file);
        if(sFile.open(QFile::ReadOnly | QFile::Text)){
            QTextStream in(&sFile);
            //QTextDocument textDocument;
            //textDocument = in.readAll().toHtmlEscaped();
            QString text = in.readAll();
            sFile.close();

            ui->ResumeHHTextEdit->setHtml(text);
            qDebug()<<text;
        }
    }

Тут Есть подходящая библиотека. Вот , наверно, нужный dll. Itenso.Rtf.Converter.Html.dll Itenso.Rtf.Converter.Html.dll Но не могу его дабавить его к проекту как библиотеку, проект требует только формат .lib

Еще тут есть проект. Но не пойму, как еого использовать. Помогите пожалуйста.

Jan. 16, 2019, 4:43 p.m.
Михаиллл

Здравствуйте. Сделал Sleep в приложении так:

        QApplication::processEvents();
        QThread::sleep(TimeSleep);

На компьютере работает прекрасно. Но на андройде работает не правильно, какието из потоков тормозятся, какието нет, и приложение работает не верно. Скажите пожалуйста, как сделать сон для приложени.

Jan. 11, 2019, 11:34 a.m.
Михаиллл

Здравствуйте. Как текст из Word перевести в формат HTML? Ниже приведена функция получения текста в формате обычной строки.

    QString ResumeFileName ("");
    ResumeFileName = QFileDialog::getOpenFileName(0, "Выберете резюме hh.ru", "", "*.doc *.docx *.rtf");
    ResumeFileName.replace(QRegExp("[/]"), "\\");
    qDebug()<<ResumeFileName;
    if (ResumeFileName != "")
    {
        QAxObject   wordApplication("Word.Application");
        QAxObject *documents = wordApplication.querySubObject("Documents");
        QAxObject *document = documents->querySubObject("Open(const QString&, bool)", ResumeFileName, true);
        QAxObject *words = document->querySubObject("Words");
        QString TextResume;
        QString HTMLResume;
        int countWord = words->dynamicCall("Count()").toInt();
        for (int a = 1; a <= countWord; a++){
            TextResume.append(words->querySubObject("Item(int)", a)->dynamicCall("Text()").toString());
            HTMLResume.append(words->querySubObject("Item(int)", a)->dynamicCall("Text()").какаято функция);
        }
        document->dynamicCall("Close (boolean)", false);
        TextResume.replace(QRegExp("[\r]"), "\r\n"); //замена символов
        qDebug()<<TextResume;
        QString Coments1 ("");
        LoadResumeInDB(TextResume, Coments1, HTMLResume);
    }
Jan. 10, 2019, 4:07 p.m.
Михаиллл

Здрвствуйте. Как можно получить изобажения из QTextEdit? Наверно это можно сделать с помощью QTextDocument. Попробовал так, но видимо что то нет так:

    QTextDocument TestDoc;
    TestDoc = TextEdit->document();
Jan. 9, 2019, 4:36 p.m.
Михаиллл

Здравствуйте. Создал класс наследник class TextEdit : public QTextEdit В редакторе заменил класс виджета QTextEdit на TextEdit Компилятор выдаеи ошибку: D:\QTProject\build-ReaderResume-Desktop_Qt_5_11_0_MinGW_32bit-Debug\ui_mainwindow.h:214: ошибка: no matching function for call to 'TextEdit::TextEdit(QWidget*&)' textEdit = new TextEdit(centralWidget); Скажите пожалуйста, в чем ошибка и как это исправить?

Jan. 4, 2019, 10:24 a.m.
Михаиллл

Здравствуйте. Как десктопный проект, скомпилированный с помощью MinGW запустить на Android?

A
Jan. 22, 2019, 9:22 p.m.
Allyonz

C++ - Test 001. The first program and data types

  • Result:40points,
  • Rating points-8
A
Jan. 22, 2019, 2:15 p.m.
Alex

Qt - Test 001. Signals and slots

  • Result:89points,
  • Rating points6
IO
Jan. 20, 2019, 6:39 p.m.
Ivan Otreshko

C++ - Тест 003. Условия и циклы

  • Result:0points,
  • Rating points-10
Last comments
Jan. 22, 2019, 1:17 p.m.
Евгений Легоцкой

Создайте тогда тему здесь на форуме в разделе Qt с выкладками кода и вашими попытками внедрения делегата, позже гляну или может кто-то ещё глянет из опытных пользователей.
I
Jan. 22, 2019, 1:13 p.m.
IscanderChe

Не проще тогда использовать сразу кастомный делегат с чекбоксом? Я попробовал, но там засада в том, что чекбокс показывается только при щелчке на ячейку, а дефолтно показывается значение. Как ...
Jan. 22, 2019, 12:15 p.m.
Евгений Легоцкой

Если будет не приемлемо потом, то тогда через кастомный Item Delegate нужно будет перерисовать ячейки в той колонке.
I
Jan. 22, 2019, 12:09 p.m.
IscanderChe

Получилось приемлемо. Спасибо!Нюанс только в том, что поле рядом с чекбоксом не пропадает, оно просто пустое, что видно при выделении ячейки. Но этого достаточно.
Jan. 22, 2019, 11:50 a.m.
Евгений Легоцкой

Переопределить метод data для той колонки и роли Qt::DisplayRole, чтобы в том случае возвращался QVariant() я так думаю... Но возможно, что у вас там будут нюансы, если вы туда чекбокс за...
Now discuss on the forum
Jan. 23, 2019, 7:54 a.m.
Михаиллл

Зарание спасибо.А еще на эту тему можно будет сделать статью. Это контент будет уникальным.
Jan. 23, 2019, 7:37 a.m.
Евгений Легоцкой

Hello. Maybe the English will be better for you? I think russian is not native language for you, or did I mistake? Did I undesrtood rightly, that you mean this documentation ( ...
I
Jan. 22, 2019, 1:45 p.m.
IscanderChe

Всем добрый день. Суть задачи: надо, чтобы в одной из колонок QTableView вместо хранимого в QSqlTableModel значения выводился чекбокс и при смене состояния чекбокса значения в базе тоже ...
M
Jan. 22, 2019, 1:15 p.m.
Max-P85

Евгений, огромное спасибо, все работает!
Join us in social networks

For registered users on the site there is a minimum amount of advertising