小编Bre*_*men的帖子

如何在QTreeWidget中选择一个项目?

我正在尝试创建一个功能,QTreeView如果没有选择任何项目,它将选择 中的最后一个项目。我不知道如何在程序中选择一个项目。到目前为止我已经尝试过这个,但它不起作用。

if (selectedItemList.length() == 0) // no items selected
    {
        QItemSelectionModel *selection = new QItemSelectionModel(treeWidget->model());
        QModelIndex index = treeWidget->model()->index(treeWidget->model()->rowCount() - 1,
                                                       0, QModelIndex());
        selection->select(index, QItemSelectionModel::Select);
        treeWidget->setSelectionModel(selection);
        return;
    }
Run Code Online (Sandbox Code Playgroud)

treeWidget是一个QTreeWidget对象,selectedItemList是其中选定项目的列表。我将不胜感激所有的帮助。

c++ qt qtreewidget

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

c ++ 11用于多个项目的容器循环

我想知道在c ++ 11语法中是否有可能为多个项使用基于for for循环的新容器,例如:

std::vector<double> x;
std::vector<double> y;

for (double& xp, yp : x, y)
{
     std::cout << xp << yp << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

我无法找到有关将此循环用于多个容器的任何信息.我将非常感谢所有的帮助.

经典for循环中的示例效果:

std::vector<double>::iterator itX = m_x.begin();
std::vector<double>::iterator itY = m_y.begin();

for (uint32_t i = 0; i < m_x.size(); i++, itX++, itY++)
{
    // operations on the m_x and m_y vectors
}
Run Code Online (Sandbox Code Playgroud)

c++ for-loop c++11

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

_Generic 结合可变参数函数?

在 C11 中,我可以创建一个原型如下所示的函数:

void myVaFunc(const char* const conv, ...);
Run Code Online (Sandbox Code Playgroud)

我可以这样运行它:

myVaFunc("ici", 1, "test", 2);
Run Code Online (Sandbox Code Playgroud)

该函数会知道(在解析第一个参数之后)有 3 个附加参数(4 个带有初始参数),因此类型为intstring(字符指针)和int. 简单,但不是很优雅。最近我了解了_Generic关键字,它允许在编译时派生变量的类型。我开始想知道是否有一种方法可以将可变参数功能(不再是功能,因为它总是需要第一个静态参数)和_Generic功能相结合。为什么?为了删除第一个参数,它告诉函数如何解析其他参数。可以这样调用的宏存在吗?

MYVAFUNC(1, "test", 2);
Run Code Online (Sandbox Code Playgroud)

并以与前面所述相同的方式工作myVaFunc

我现在考虑了一段时间,但无法弄清楚这是否可能。

c variadic-functions c11

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

Qt Windows 10 通知

我正在尝试在我的 Qt 5.13.0 程序中使用 Windows 10 通知系统(从右侧面板弹出的通知系统,可从通知托盘图标获得)。我正在查看 Windows extras 类:https : //doc.qt.io/qt-5/qtwinextras-index.html但找不到任何此类 API。在 Qt 中甚至有可能吗?

windows qt

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

如何使用 pugixml 读取节点?

我刚刚下载了 pugixml 库,我正在尝试使其适应我的需求。它主要面向我没有使用的 DOM 样式。我存储的数据如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<profile>
    <points>
        <point>
            <index>0</index>
            <x>0</x>
            <y>50</y>
        </point>
        <point>
            <index>1</index>
            <x>2</x>
            <y>49.9583</y>
        </point>
        <point>
            <index>2</index>
            <x>12</x>
            <y>50.3083</y>
        </point>
     </points>
</profile>
Run Code Online (Sandbox Code Playgroud)

Pugixml 指南说:

通常将数据存储为某个节点的文本内容 - 即这是一个节点。在这种情况下,节点没有值,而是有一个 node_pcdata 类型的子节点,其值为“这是一个节点”。pugixml 提供了 child_value() 和 text() 辅助函数来解析这些数据。

但是我在使用这些方法时遇到了问题,我没有得到节点值。

#include "pugixml.hpp"

#include <string.h>
#include <iostream>

int main()
{
    pugi::xml_document doc;
    if (!doc.load_file("/home/lukasz/Programy/eclipse_linux_projects/xmlTest/Debug/pidtest.xml"))
        return -1;

    pugi::xml_node points = doc.child("profile").child("points");

    for (pugi::xml_node point = points.first_child(); point; point = points.next_sibling())
    {
        // ?
    }


    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如何读出 for 中的索引、x 和 …

c++ xml pugixml

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

将字符向量转换为字符串的最快方法

我有一个字符向量(实际上是无符号字符):

std::vector<unsigned char> vec;
Run Code Online (Sandbox Code Playgroud)

我想将其转换/复制到字符串对象。我尝试通过以下方式做到这一点:

std::string requestedName;

for (auto letter : vec)
{
    requestedName.append((char)letter);
}
Run Code Online (Sandbox Code Playgroud)

但编译器表示这种转换是不可能的。我愿意提供所有帮助。

c++ string vector std c++11

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

Qt信号和插槽:是否复制了参考参数?

在qt框架中,大多数库信号和插槽使用指针作为参数.我想知道,如果我创建一个信号槽"结构",它将参考作为参数而不是指针,整个参数是否会被复制,或者只是4个字节(32位系统),就像常规的c ++参考一样?

我问这个是因为当我用参考参数创建信号/槽方法时我发现了一些东西.当我接下来的connect时候,QTCreator中的自动完成机制并没有像参与指针参数那样用参考参数提示我.他用常规参数暗示我.例如:

我创建了一个信号和插槽:

...
signals:
     void mySignal(int& parameter);
private slots:
     void on_mySignal(int& parameter);
Run Code Online (Sandbox Code Playgroud)

然后我尝试连接它们,Qt没有添加&参数参考:

...
connect(this, SIGNAL(mySignal(int)), this, SLOT(on_mySignal(int)));
Run Code Online (Sandbox Code Playgroud)

我必须手动更改为:

connect(this, SIGNAL(mySignal(int&)), this, SLOT(on_mySignal(int&)));
Run Code Online (Sandbox Code Playgroud)

因此,我想知道,甚至参考信号/插槽?我将非常感谢所有的帮助.

c++ qt slots qt-signals

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

参数是否被复制两次以便在c中内联?

我有一个关于c/c ++中的内联函数和参数复制的问题.让我们假设我想在没有内联说明符的情况下运行此函数:

void my_func(int param)
{
    my_inner_func(param);
}
Run Code Online (Sandbox Code Playgroud)

param将首先复制到my_func然后再复制到my_inner_func.如果函数my_funcinline,那么编译器只会复制param一次my_inner_func参数或两次.我将非常感谢所有的帮助.

编辑:如果它有所不同,我想请求c和c ++的解释.

c c++ inline function

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

C 中的大小写可变宏

我有 2 个包装宏用于断言函数输入参数:

/**
 * @brief   An assert wrapper with no value return in case assert fails.
 * @param   x_: value to test for being non zero.
 */
#define UTIL_ASSERT_VOID(x_)                                                \
    assert_param(x_);                                                       \
    if (!x_)                                                                \
        return;                                                             \

/**
 * @brief   An assert wrapper with a value return in case assert fails.
 * @param   x_: value to test for being non zero.
 */
#define UTIL_ASSERT_VAL(x_, ret_)                                           \
    assert_param(x_);                                                       \
    if (!x_)                                                                \
        return ret_;                                                        \
Run Code Online (Sandbox Code Playgroud)

前者用于返回 void 的函数,后者用于返回非 void 的函数。我想知道在 …

c macros variadic-macros c11

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

特殊结构类型

所以我在查看 Microchip 的 dsPIC MCU 头文件时偶然发现了这个结构:

/* Generic structure of entire SFR area for each UART module */
typedef struct tagUART {
        uint16_t uxmode;
        uint16_t uxsta;
        uint16_t uxtxreg;
        uint16_t uxrxreg;
        uint16_t uxbrg;
} UART, *PUART;
Run Code Online (Sandbox Code Playgroud)

我似乎无法弄清楚这里的类型或实例是什么(以及这样设计的目的是什么):

  1. 什么是标记UART?
  2. 什么是UART?
  3. 什么是*PUT?

c struct microchip

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