RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题

全部问题

Martin Hope
αλεχολυτ
Asked: 2020-01-21 01:00:05 +0000 UTC

用于声明从复合对象派生的变量的新语法

  • 13

C++17 有一个新的语法来声明以下形式的变量:

auto [x, y, z] = f();

其中f()是返回复合对象(数组、元组、结构等)的函数。

这个语法叫什么,它有什么作用?

c++
  • 1 个回答
  • 10 Views
Martin Hope
Beginner
Asked: 2020-01-19 02:43:50 +0000 UTC

什么是 mysql 索引以及如何使用它们

  • 13

你能给出一个关于表索引的清晰示例吗?文档说了这么多,这是误导。索引是主键还是外键?

mysql
  • 3 个回答
  • 10 Views
Martin Hope
NoTrust
Asked: 2020-12-31 17:30:31 +0000 UTC

为什么在多线程应用中需要创建n+1个工作线程?

  • 13

n物理核心数在哪里。我已经不止一次遇到过这条规则,但我就是不明白为什么要这样做,以及它是否总是比创建n线程更有效率。

многопоточность
  • 3 个回答
  • 10 Views
Martin Hope
Vladimir Gamalyan
Asked: 2020-12-29 02:25:58 +0000 UTC

为什么部分移除 1/8" 音频插孔后声音会静音?[关闭]

  • 13
关闭 这个问题是题外话。目前不接受回复。

根据帮助中描述的规则,这个问题很可能不对应俄语中 Stack Overflow 的主题。

5 年前关闭。

改进问题

每次将 1/8" 音频插孔从插孔中部分移除时,人声似乎被静音了,就像我在听卡拉 OK 版本一样。据我了解插孔的设计,这是不可能的,但是,我不是唯一注意到这种效果的人。

当音频插孔被部分移除时,是什么导致人声静音?

аудио
  • 2 个回答
  • 10 Views
Martin Hope
Matty
Asked: 2020-12-27 23:15:21 +0000 UTC

用于处理笔记的程序的代码审查

  • 13

你好。我正在编写一个用于处理笔记的小程序。现在已经实现了最低限度的功能:可以创建、编辑和删除注释。对于 GUI,我有 Qt,基础是 SQLite。一般来说,一切正常,做我想做的事。但是我的编程经验趋于零,所以我怀疑有很多缺点我无法修复,因为我不知道去哪里找。我希望您指出所有明显的错误/问题/缺点。对从划分到类的逻辑到可能的内存泄漏的一切都感兴趣。

现在基本上有 12 个类:

  • 4 个窗口:MattyNotesMainWindow, MattySettingsDialog, addNoteDialog,MattyMessageBox
  • 使用数据库的类DbManager
  • 用于编写 SQL 查询的类QueryConstructor
  • 注解类本身MattyNote
  • 用于可视化显示注释的构造函数类MattyGroupBox
  • 排序和显示笔记的类NoteHolder
  • css控制类MattyStyleSheetEditor
  • 用于存储字符串和字符的类Constants
  • 手表MattyClocks

我知道不太可能有人会校对所有代码,因此也许您可以查看类及其方法并说出哪些是多余的,或者查看任何一个类并指出其中的缺陷。

例如连接数据库、编辑已有笔记、从数据库中删除所有笔记等功能:

bool DbManager::connect(const QString & path)
{
    MattyNotesDb = QSqlDatabase::addDatabase("QSQLITE");
    MattyNotesDb.setDatabaseName(path);

    if(QFile::exists(path))
    {
        if (!MattyNotesDb.open())
        {
            showIsNotOpenedError();
            MattyNotesDb.close();

            return false;
        }
        else
        {
            PathToDb = MattyNotesDb.databaseName();
        }

        return true;
    }
    else
    {
        return false;
    }
}

bool DbManager::editNote(MattyNote & Note, int NoteId)
{
    if (connected())
    {
        QueryConstructor Edit;
        Edit.setTableName(QStringLiteral("Notes"));

        Edit.addWhereFieldValue(QStringLiteral("NoteId"), QString::number(NoteId));

        QMap<QString, QString> NoteTemp;
        NoteTemp["NoteTitle"] = "\'" + Note.getTitle() + "\'";
        NoteTemp["NoteType"] = "\'" + Note.getType() + "\'";
        NoteTemp["NoteText"] = "\'" + Note.getText() + "\'";
        NoteTemp["EventTime"] = "\'" + Note.getEventTime() + "\'";
        NoteTemp["EventDate"] = "\'" + Note.getEventDate() + "\'";
        NoteTemp["CrTime"] = "\'" + Note.getCrTime() + "\'";
        NoteTemp["CrDate"] = "\'" + Note.getCrDate() + "\'";
        NoteTemp["TypeId"] = QString::number(Note.getTypeId());

        Edit.setWhatToSetFieldValue(NoteTemp); //

        QSqlQuery editNoteQuery;
        return editNoteQuery.exec(Edit.constructUpdateQuery());
    }
    else
    {
        return false;
    }
}

QVector<MattyNoteRow> DbManager::showNotes()
{
    if (connected())
    {
        QVector<MattyNoteRow> VectorOfNoteRows;

        QueryConstructor SelectAllNotes;
        SelectAllNotes.setTableName(QStringLiteral("Notes"));
        SelectAllNotes.setOrderByClause("NoteId", Descending);

        QSqlQuery getAllNotesQuery(MattyNotesDb);

        if( getAllNotesQuery.exec(SelectAllNotes.constructSelectQuery()))
        {
            while (getAllNotesQuery.next())
            {
                MattyNoteRow Row;

                Row.NoteId=getAllNotesQuery.value("NoteId").toInt();
                Row.NoteTitle=getAllNotesQuery.value("NoteTitle").toString();
                Row.NoteType=getAllNotesQuery.value("NoteType").toString();
                Row.NoteText=getAllNotesQuery.value("NoteText").toString();
                Row.EventTime=getAllNotesQuery.value("EventTime").toString();
                Row.EventDate=getAllNotesQuery.value("EventDate").toString();
                Row.CrTime=getAllNotesQuery.value("CrTime").toString();
                Row.CrDate=getAllNotesQuery.value("CrDate").toString();
                Row.TypeId=getAllNotesQuery.value("TypeId").toInt();

                VectorOfNoteRows.push_back(Row);
            }
        }
        else
        {
            QMessageBox::critical(NULL, QObject::tr("Error"), getAllNotesQuery.lastError().text());
        }

        return VectorOfNoteRows;
    }
    else
    {
        return QVector<MattyNoteRow>();
    }
}

将注释发送到表单:

    void NoteHolder::publishNotes(QWidget* ParentWidget)
    {
        erasePublishedNotes(ParentWidget);

        getAllNotes();

        QVector<class MattyNote>::iterator NoteNumber;
        int i;
        for (NoteNumber = ListOfAllNotes.begin(), i=0; NoteNumber < ListOfAllNotes.end();NoteNumber++, i++)
        {

            MattyGroupBox* MyGroupBox = new MattyGroupBox(*NoteNumber, ParentWidget);

            ParentWidget->layout()->addWidget(MyGroupBox);
        }
    }

void NoteHolder::erasePublishedNotes(QWidget* ParentWidget)
{
    MattyGroupBox* MgbTemp;
    while ((MgbTemp = ParentWidget->findChild<MattyGroupBox*>()) != 0)
    {
        delete MgbTemp;
    }

    QGroupBox* GbTemp;
    while ((GbTemp = ParentWidget->findChild<QGroupBox*>()) != 0)
    {
        delete GbTemp;
    }
}

void NoteHolder::getAllNotes()
{
    TotalNoteCount = 0;

    if (!ListOfAllNotes.isEmpty())
        ListOfAllNotes.clear();

    QVector<struct MattyNoteRow> ListOfRows = DbManager::showNotes();

    for (int i = 0; i < ListOfRows.length();i++)
    {
        MattyNote TempNote(ListOfRows[i]);
        ListOfAllNotes.append(TempNote);
        TotalNoteCount++;
    }
}

整个源代码可以在这里看到:GitHub

分离成类、它们的方法、调用、依赖关系等。这里:doxygen

c++
  • 2 个回答
  • 10 Views
上一页
下一页

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5