RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

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

问题[qt]

Martin Hope
Koto SCrafter
Asked: 2024-12-31 03:07:32 +0000 UTC

需要使压缩qpixmap时的图像质量保持更高

  • 5

图像质量有待提高。上面是 WhatsApp +- 中相同尺寸的图片,下面是我的应用程序中的图片。

在此处输入图片描述

#include <QtWidgets>
#include <QPainter>
class ChatWidgetInList : public QWidget {
Q_OBJECT
private:
    QPixmap _icon;
    QString _chatName;
    QString _lastMsg;
    QString _lastMsgDate;
    QLabel lbl;
    bool _isPinned;
public:
    ChatWidgetInList(QString chatName, QString lastMsg, QString lastMsgDate, bool isPinned, QWidget* wgt = 0) : QWidget(wgt) {
        setFixedHeight(64);
        setMinimumWidth(400);
        setMaximumWidth(512);
        _chatName = chatName;
        _lastMsg = lastMsg;
        _lastMsgDate = lastMsgDate;
        _isPinned = isPinned;
        _icon = QPixmap("E:\\QtProjects\\build-testingWidgets-Desktop_Qt_5_12_12_MinGW_64_bit-Debug\\debug\\" + _chatName + ".png");
        lbl.setPixmap(_icon);
        lbl.show();
        QFile file("E:\\QtProjects\\build-testingWidgets-Desktop_Qt_5_12_12_MinGW_64_bit-Debug\\debug\\" + _chatName + ".png");
        qDebug() << file.exists();
    }
    virtual void paintEvent(QPaintEvent*)override{
        QPainter painter;
        painter.begin(this);
        painter.setRenderHint(QPainter::Antialiasing, true);
        QLinearGradient gradient1(64, 0, width(), height());
        gradient1.setColorAt(1, QColor(38,39,40));
        gradient1.setColorAt(0, QColor(64,66,68));
        painter.setPen(Qt::white);
        painter.setBrush(QBrush(QColor(38,39,40)));
        painter.drawRect(0, 0, 63, 64);
        painter.setBrush(gradient1);
        painter.drawRect(64, 0, width() - 64, 64);
        painter.drawLine(64, 0, 64, 64);
        painter.drawRoundRect(68, 4, width() - 72, 56, 5, 25);
        qreal scaleX = 56/float(_icon.size().width());
        qreal scaleY = 56/float(_icon.size().height());
        painter.scale(scaleX, scaleY);
        painter.setBrush(QBrush(Qt::black, _icon));
        painter.drawEllipse(4 / scaleX, 4 / scaleY, 56 / scaleX, 56 / scaleY);
        painter.scale(1 / scaleX, 1 / scaleY);
        QFont font;
        font.setBold(true);
        font.setPixelSize(14);
        painter.setFont(font);
        painter.drawText(72, 20, _chatName);
        font.setBold(false);
        font.setPixelSize(13);
        painter.setFont(font);
        painter.drawText(72, 52, _lastMsg);
        painter.end();
    }
};
qt
  • 1 个回答
  • 27 Views
Martin Hope
WOLF777
Asked: 2024-07-09 18:50:13 +0000 UTC

Astra Linux 上的 QtCreator 中无法启动调试

  • 5

QtCreator 6.0.2、AstraLinux 1.7。如果重要的话,该项目是通过 CMake 构建的。调试似乎已按其应有的方式配置,构建类型为“调试”,但在调试模式下启动时,右下角的“启动调试器”复选框显示为红色。该日志包含以下条目:

dEXAMINING /home/astra/Projects/bss/build/bin/self-info
dELF SECTIONS:  .interp .note.ABI-tag .note.gnu.build-id .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_r .rela.dyn .rela.plt .init .plt .text .fini .rodata .qtversion .eh_frame_hdr .eh_frame .gcc_except_table .init_array .fini_array .data.rel.ro .dynamic .got .got.plt .data .bss .comment .debug_aranges .debug_info .debug_abbrev .debug_line .debug_str .debug_ranges .symtab .strtab .shstrtab 
dStart parameters: 'self-info' mode: 1
dABI: x86-linux-generic-elf-64bit
dLanguages: c++ 
dExecutable: /home/astra/Projects/bss/build/bin/self-info
dDirectory: /home/astra/Projects/bss/build/bin
dDebugger: /usr/bin/gdb
dProject: /home/astra/Projects/bss
dAdditional Search Directories:
dSysroot: 
dDebug Source Location: 
dDebugger settings:

dState changed from DebuggerNotReady(0) to EngineSetupRequested(1)
dCALL: SETUP ENGINE
dTRYING TO START ADAPTER
dENABLING TEST CASE: 0
dSTARTING /usr/bin/gdb --tty=/tmp/QtCreator-uXHODZ/outputcollector.MRMaXl -i mi
dGDB STARTED, INITIALIZING IT

>&"show version\n"
>~"GNU gdb (AstraLinuxSE 8.2.1-2) 8.2.1\n"
>~"Copyright (C) 2018 Free Software Foundation, Inc.\n"
>~"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\nThis is free software: you are free to change and redistribute it.\nThere is NO WARRANTY, to the extent permitted by law."
>~"\nType \"show copying\" and \"show warranty\" for details.\n"
>~"This GDB was configured as \"x86_64-linux-gnu\".\n"
>~"Type \"show configuration\" for configuration details.\n"

>&"set substitute-path /home/qt/work/qt /usr/include/x86_64-linux-gnu/../Src\n"
>790^done

>&"python sys.path.insert(1, '/usr/share/qtcreator/debugger/')\n"
>791^done

>&"python sys.path.append('/usr/bin/gdb/data-directory/python')\n"
>792^done

>&"python from gdbbridge import *\n"

>793^done

>&"python theDumper.setFallbackQtVersion({\"token\":794,\"version\":331522})\n"
>~"bridgemessage={msg=\"b'got fallback qt version 0x50f02'\"},\n"
>794^done

>&"python theDumper.loadDumpers({\"token\":795})\n"

>&"cd /home/astra/Projects/bss/build/bin\n"
>~"Working directory /home/astra/Projects/bss/build/bin.\n"
>799^done

>800^done
dNOTE: ENGINE SETUP OK
dState changed from EngineSetupRequested(1) to EngineRunRequested(3)
dCALL: RUN ENGINE
 Установка точек останова...
dУстановка точек останова...
dTAKING OWNERSHIP OF BREAKPOINT 1
dRUNNING NEEDS-STOP COMMAND -break-insert  -f "\"imitator.cpp\":276"
dUNSAFE STATE FOR QUEUED COMMAND. EXECUTING IMMEDIATELY
<801-break-insert  -f "\"imitator.cpp\":276"
dTAKING OWNERSHIP OF BREAKPOINT 2
dRUNNING NEEDS-STOP COMMAND -break-insert  -f "\"main.cpp\":62"
dUNSAFE STATE FOR QUEUED COMMAND. EXECUTING IMMEDIATELY
<802-break-insert  -f "\"main.cpp\":62"
dTAKING OWNERSHIP OF BREAKPOINT 6
dRUNNING NEEDS-STOP COMMAND -break-insert  -f "\"selfinformation.cpp\":30"
dUNSAFE STATE FOR QUEUED COMMAND. EXECUTING IMMEDIATELY
<803-break-insert  -f "\"selfinformation.cpp\":30"
dTAKING OWNERSHIP OF BREAKPOINT 7
dRUNNING NEEDS-STOP COMMAND -break-insert  -f "\"CMakeLists.txt\":9"
dUNSAFE STATE FOR QUEUED COMMAND. EXECUTING IMMEDIATELY
<804-break-insert  -f "\"CMakeLists.txt\":9"
<805-exec-run

>&"No source file named main.cpp.\n"
>802^done,bkpt={number="2",type="breakpoint",disp="keep",enabled="y",addr="<PENDING>",pending="\"main.cpp\":62",times="0",original-location="\"main.cpp\":62"}

>&"No source file named CMakeLists.txt.\n"
>804^done,bkpt={number="4",type="breakpoint",disp="keep",enabled="y",addr="<PENDING>",pending="\"CMakeLists.txt\":9",times="0",original-location="\"CMakeLists.txt\":9"}

>=thread-group-started,id="i1",pid="22825"
 Создана группа потоков i1.
dПолучено уведомление от pid 22825
>=thread-created,id="1",group-id="i1"
 Поток 1 создан.
>=thread-exited,id="1",group-id="i1"
 Завершился поток 1 из группы i1.
>=thread-group-exited,id="i1"
 Группа потоков i1 завершена.
dNOTE: INFERIOR EXITED
dState changed from EngineRunRequested(3) to InferiorShutdownFinished(13)
dState changed from InferiorShutdownFinished(13) to EngineShutdownRequested(14)
dCALL: SHUTDOWN ENGINE
dPLAIN ADAPTER SHUTDOWN 14
dINITIATE GDBENGINE SHUTDOWN, PROC STATE: 2
<806python theDumper.exitGdb({"token":806})
>805^error,msg="During startup program exited with code 127."
eERROR: UNEXPECTED STATE: EngineShutdownRequested  WANTED: EngineRunRequested IN /opt/astra/qtcreator/qtcreator-6.0.2/src/plugins/debugger/gdb/gdbengine.cpp:4756
dDuring startup program exited with code 127.
dNOTE: ENGINE RUN FAILED
 Запуск неудачно завершился.
dState changed from EngineShutdownRequested(14) to EngineRunFailed(4)
dState changed from EngineRunFailed(4) to EngineShutdownRequested(14)
dCALL: SHUTDOWN ENGINE
dPLAIN ADAPTER SHUTDOWN 14
dINITIATE GDBENGINE SHUTDOWN, PROC STATE: 2
<807python theDumper.exitGdb({"token":807})

>&"python theDumper.exitGdb({\"token\":806})\n"
dQUIT DEBUGGER REQUESTED IN STATE 14
dGDB PROCESS FINISHED, status 0, exit code 0 (0x0)
dNOTE: ENGINE SHUTDOWN FINISHED
dState changed from EngineShutdownRequested(14) to EngineShutdownFinished(15)
 Отладчик завершился.
dState changed from EngineShutdownFinished(15) to DebuggerFinished(16)

我多次写过以下警告:

warning: GDB: Failed to set controlling terminal: Inappropriate ioctl for device
warning: Could not trace the inferior process.Error: 
warning: ptrace: Operation not permitted

我怎样才能在 QtCreator 中开始调试?

qt
  • 2 个回答
  • 47 Views
Martin Hope
Dezmonder
Asked: 2024-05-23 16:08:53 +0000 UTC

使用 QThreadPool 的优点/缺点

  • 5

我想在 PyQt5 中实现线程,线程用于长时间但不昂贵的操作。我阅读了很多论坛、文档、问题,但没有完全理解什么是最好使用的。我尝试实现线程:

  1. 通过分类 fromQThread和重写run.
  2. 从 分类QObject,定义方法 和moveToThread()。

这两种方法都是成功的,但是它们都有各自的缺点。

通过实现QThreadPool。虽然这看起来是最简单的方法,但它允许您从任何地方将任何函数(包括带有参数的函数)发送到流。

但与此同时,QThreadPool在有关流的问题中很少提及对象本身;每个人都建议使用其他方法。那么问题来了,为什么会这样呢?也许我遗漏了一些非常重要的东西,这些东西会影响代码稍后的工作方式?

qt
  • 1 个回答
  • 31 Views
Martin Hope
M Misha
Asked: 2024-02-24 01:58:54 +0000 UTC

如果标志被覆盖,QSqlTableModel 不会添加数据

  • 5

我特地写了一个测试程序来查找原因。 测试程序

    class Abonent_Model : public QSqlTableModel
bool Abonent_Model::add_model_abonent(const QString &nick_name, const QByteArray & hash, const QString & avatar)
{

    //qDebug() <<  "m_model->tableName() = " << m_model->tableName();
   // m_qdb.transaction();
    QSqlRecord record = this->record();
   // record.clear();


    record.setValue("nick_name", nick_name);
    record.setValue("hash_abonent", hash);
    record.setValue("last_date_time", QDateTime::currentDateTime().toString("dd.MM.yyyy hh:mm"));
    record.setValue("avatar", avatar);

    if(this->insertRecord(-1, record)) //add to model
    {
        if (!this->submitAll()) //add to base_data
        {
            qDebug() << "Error database line: " << __LINE__ << this->database().lastError().text();
            qDebug() << "Error model line: " << __LINE__ << this->lastError().text();
            this->revertAll();
            return false;
        }

        return true;
    }
    else //TODO db & rollback
    {
        qDebug() << "Error database line: " << __LINE__ << this->database().lastError().text();
        qDebug() << "Error model line: " << __LINE__ << this->lastError().text();
        this->database().rollback();
    }
    return false;
}

并且 SubmitAll 给出一个错误,指出没有任何内容可以添加到数据库中。(错误模型行:33“没有要更新的字段”)

现在让我们创建重写的方法及其实现

//    protected:
//    Qt::ItemFlags flags(const QModelIndex &index) const;

//Qt::ItemFlags Abonent_Model::flags(const QModelIndex &index) const
//{
//    if(!index.isValid())
//        return Qt::ItemIsEnabled;
//    return Qt::ItemIsEnabled | Qt::ItemIsSelectable;
//}

现在一切都已完美添加,这似乎是 QSqlTableModel 的错误,因为这些标志与视图相关联,而不是与数据库相关联。也许有人遇到过,看看?当然你可以通过添加它

SqlQuery query(m_qdb);
ok = query.exec("insert into abonents values('nick1', '111111111', '2.02.2024 02:01', '')");
if(!ok)
{
    qDebug() << __LINE__ << "query.exec" << query.lastError().text();
}

但这不适合你,那么最好使用 libsqlite 和 QAbstractItemModel 中的模型,而且还不止于此

qt
  • 1 个回答
  • 53 Views
Martin Hope
mikelsv
Asked: 2024-02-12 05:14:31 +0000 UTC

Qt::PartiallyChecked 时的 QCheckBox 控件行为

  • 5

我有一个表,第一列中有一个 QCheckBox。它可能包含无法检查 QCheckBox 的非活动行。

QCheckBox 在位置 -1 处的状态是通过编程计算的。并且可以设置为Qt::PartiallyChecked。

进一步单击,将此值设置为 Qt::Checked,并且具有非活动行的代码再次将其更改为 Qt::PartiallyChecked。依此类推,围成一圈。也就是说,只有当所有线路都处于活动状态时,您才能取消选中该框。只有在此基础上才能将值设置为Qt::Checked,下次点击时将其更改为Qt::Unchecked。

如何在点击时将 Qt::PartiallyChecked 更改为 Qt::Unchecked?例如,防止 Qt 更改值并使用 QCheckBox::clicked 事件以编程方式执行此操作。

qt
  • 1 个回答
  • 32 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