小编ram*_*ror的帖子

static const char* - 已定义但未使用

我们需要const static char在每个标头(.h)和源(.cpp)文件中定义一个指针,以符合公司编码标准.

static const char * one_time_param = "ABCDEFG";
Run Code Online (Sandbox Code Playgroud)

编译时,编译器会生成大量"已定义但未使用"的警告.请问有人有解决这个问题的方法吗?

-Wno-unused-parameter
Run Code Online (Sandbox Code Playgroud)

使用上面的编译器标志,我们可以抑制这些警告.但是,这也抑制了一些可能需要注意的其他未使用的参数.我们尝试了这些仅适用于功能参数的解决方案.

Q_UNUSED
Run Code Online (Sandbox Code Playgroud)

在Qt,和

#define UNUSED(x) ((void)(x))
Run Code Online (Sandbox Code Playgroud)

以前的类似问题:

如何在GCC中隐藏"已定义但未使用"的警告?

c++ qt

9
推荐指数
3
解决办法
1万
查看次数

使用屏幕键盘时,保持输入字段可见

我有一个虚拟键盘,该虚拟键盘从屏幕底部弹出,始终保持在顶部。我将在我的应用程序中使用它,并且有一个小问题。

如果接受此键盘输入的文本输入字段位于视图的中间/底部(主窗口/屏幕),则该字段将被隐藏在键盘后面,即在隐藏键盘之前看不到已输入的内容。

键盘作为platforminputcontext插件运行,它将知道接受输入的字段。

void KeyboardPlatformInputContext::setFocusObject(QObject* object)
{
    qDebug() << m_focusedObject << object;
    m_focusedObject = object;
}
Run Code Online (Sandbox Code Playgroud)

当按键被按下时,它们QEvents像这样传递

void KeyboardPlatformInputContext::processNormalKeyClick(const QString& key)
{
    qDebug() << m_focusedObject << key;
    if (m_focusedObject) {
        QInputMethodEvent inputEvent;
        inputEvent.setCommitString(key);
        QGuiApplication::sendEvent(m_focusedObject, &inputEvent);
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,利用可用的信息(m_focusedObjectQGuiApplication),可以做一些事情来保持输入字段的可见性。总是。

qt qml

7
推荐指数
1
解决办法
2029
查看次数

用C++卸载USB驱动器

我正在为Linux(Ubuntu)开发一个Qt应用程序,我在其中使用USB驱动器备份一些内容.应用程序应在复制内容后卸载目标驱动器.我有一个udev规则文件,用于在特定位置安装USB ENV{mount_options}="relatime,users,umask=0,uid=user,gid=user",用户代表我的用户名.

我没试过就试着用这个.

const char* usb = "/mnt/mountpoint/usbdrive";
if (!umount(usb))
{
  qDebug() << "Device unmounted";
}
else
{
  qDebug() << "Can't unmount" << strerror(errno); //this prints Operation not permitted
}
Run Code Online (Sandbox Code Playgroud)

有人可以帮我吗?我使用umount对吗?

提前致谢.

c++ linux ubuntu qt

5
推荐指数
1
解决办法
2220
查看次数

调试很慢

我已经交叉编译了 Qt 并创建了 SD 卡映像并使用losetup. 与直接sshfs安装相比,现在编译速度要快得多。应用程序运行正常。现在,我想调试它的速度太慢了,它看起来像是将文件复制回开发机器进行调试。我看到这个建议:

File transfers from remote targets can be slow. Use "set sysroot" to access files locally instead.

我正在使用gdb-multiarch并且已经得到gdbserver(在目标板上)。

我有点迷失在这里。在哪里设置这个选项?我已经--sysroot为二进制文件提供了参数,但没有用。任何帮助都非常感谢。

更新:使用 Qt Creator 进行开发。

qt gdb

2
推荐指数
1
解决办法
3189
查看次数

从 C++ 使用 libcurl 的下载进度函数

使用libcurl. 下载源 tar 文件并编译,直到这里一切正常。

遵循这个进度函数示例,它没有按预期工作。

设置显示进度的回调函数

curl_easy_setopt(m_curl, CURLOPT_XFERINFOFUNCTION, &FileTransfer::progressCallback);
curl_easy_setopt(m_curl, CURLOPT_NOPROGRESS, 0);
Run Code Online (Sandbox Code Playgroud)

这是

int FileTransfer::progressCallback(void* clientp, curl_off_t dlTotal, curl_off_t dlNow, curl_off_t ulTotal, curl_off_t ulNow)
{
    fprintf(stderr, "UP: %" CURL_FORMAT_CURL_OFF_T " of %" CURL_FORMAT_CURL_OFF_T
              "  DOWN: %" CURL_FORMAT_CURL_OFF_T " of %" CURL_FORMAT_CURL_OFF_T
              "\r\n",
              ulNow, ulTotal, dlNow, dlTotal);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是打印

........
UP: 4233172 of 0  DOWN: 0 of 2588672
UP: 4233172 of 0  DOWN: 0 of 2588672
UP: 4233172 of 0  DOWN: 0 of 2588672
UP: …
Run Code Online (Sandbox Code Playgroud)

c c++ libcurl

1
推荐指数
1
解决办法
921
查看次数

qwt中的魔术数字

Qwt似乎使用了很多神奇的数字.任何人都可以解释以下代码中的90和16

void QwtRoundScaleDraw::drawBackbone( QPainter *painter ) const
{
    const double a1 = qMin( scaleMap().p1(), scaleMap().p2() ) - 90 * 16;
    const double a2 = qMax( scaleMap().p1(), scaleMap().p2() ) - 90 * 16;

    const double radius = d_data->radius;
    const double x = d_data->center.x() - radius;
    const double y = d_data->center.y() - radius;

    painter->drawArc( x, y, 2 * radius, 2 * radius,
        -a2, a2 - a1 + 1 );          // counterclockwise
}
Run Code Online (Sandbox Code Playgroud)

c++ qt qwt

0
推荐指数
1
解决办法
151
查看次数

标签 统计

qt ×5

c++ ×4

c ×1

gdb ×1

libcurl ×1

linux ×1

qml ×1

qwt ×1

ubuntu ×1