小编cbu*_*art的帖子

STL喜欢容器typedef快捷方式?

STL容器的常见模式是:

map<Key, Value> map;
for(map<Key, Value>::iterator iter = map.begin(); iter != map.end(); ++iter)
{
  ...
}
Run Code Online (Sandbox Code Playgroud)

因此,为了避免编写模板参数的声明,我们可以在某处执行此操作:

typedef map<Key, Value> TNiceNameForAMap;
Run Code Online (Sandbox Code Playgroud)

但是,如果此映射仅用于单个函数或单个迭代,则这是一个烦人的开销.

这种typedef有什么方法吗?

c++ stl

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

将信号用于继承自QObject的类

我问是否有一种方法可以signals在类继承的类中使用QObject:

mysuperclass.cpp

#include "mysuperclass.h"

MySuperclass::MySuperclass(quint16 port, QObject *parent) :
  QObject(parent), port(port)
{
  this->connected = false;
}
Run Code Online (Sandbox Code Playgroud)

mysuperclass.h

#include <QAbstractSocket>

class MySuperclass: public QObject
{
  Q_OBJECT
public:
  explicit MySuperclass(quint16 port = 0, QObject *parent = 0);

signals:
   //there is nothing here
public slots:
  virtual void newValue(){qDebug() << "newValue";}
  virtual void connectionEstablished(){qDebug() << "connectionEstablished";}
  virtual void disconnected(){qDebug() << "disconnected";}
protected:
  QAbstractSocket* networkSocket;
  quint16 port;
  bool connected;
};
Run Code Online (Sandbox Code Playgroud)

mysubclass.cpp

#include <QTcpSocket>
#include <QHostAddress>

MySubClass::MySubClass(quint16 ServerPort, QObject *parent) : 
  MySuperClass(ServerPort, …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance qt signals-slots

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

QTreeView具有固定的列宽

今天,我正在尝试配置a QTreeView以使其符合我的要求。我的观点基本上有三列。无论列大小如何,第二和第三列的宽度应恰好为50像素。第一列应占据剩余空间。

如果放大窗口小部件,则第一列应自动占据所需的可用空间,而第二列和第三列应保留其给定的50像素宽度。

这是我到目前为止尝试过的:

main.cpp

#include <QApplication>
#include <QTreeView>
#include <QDebug>
#include <QStandardItemModel>
#include <QHeaderView>
#include "ColumnDelegate.h"

int main(int argc, char** args) {
    QApplication app(argc, args);
    auto widget = new QTreeView;
    auto model = new QStandardItemModel;
    model->insertRow(0, { new QStandardItem{ "Variable width" }, new QStandardItem{ "Fixed width 1" }, new QStandardItem{ "Fixed width 2" } });
    model->insertRow(0, { new QStandardItem{ "Variable width" }, new QStandardItem{ "Fixed width 1" }, new QStandardItem{ "Fixed width 2" } });
    widget->setModel(model);
    widget->setItemDelegateForColumn(1, new …
Run Code Online (Sandbox Code Playgroud)

c++ qt qtreeview qheaderview qstyleditemdelegate

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

嵌套 QDockWidget

现在我QDockWidgets在应用程序的左侧有四个定制的。当您启动应用程序时,每一项都是可见的,但由于每一项的可见性而非常小。

我希望其中的三个QDockWidgets嵌套在一个主要的后面,以给予该优先级和屏幕的整个左侧。

有谁知道在创建它们时如何告诉QDockWidgets嵌套?

c++ qt qdockwidget

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

缩放和移动QPainterPath

有没有办法扩大规模QPainterPath

在示例中,我的问题是我有一个包含许多行的QPainterPath大小,400,400我想将其缩放到800,800任何其他大小,并通过向其他坐标添加偏移来移动整个事物.

编辑:

问题的根源是我想在一个小部件和后期阶段绘制一些内容我想通过将其缩放到适当的大小来在另一个小部件上显示绘图.这就是为什么我在考虑缩放QPainterPath.

c++ qt

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

在WIX安装程序中自定义对话框图像和横幅图像

我在我的C#windows窗体应用程序中创建了wix安装程序项目.

我是使用wix Toolset的新手.我想知道是否有类似主题文件的内容,我可以从中更改对话框图像和横幅图像,因为我需要为不同的客户分发此安装程序,我应该设置其徽标的外观和感觉.我希望他们觉得这个安装程序是专门为他们定制的.

我的意思是,我不想每次都从.wxs文件内部更改对话框图像和横幅图像.我想可能有类似.theme文件的东西,每次我需要更改它时我都可以设置图像.

installer themes wix

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

将 C++ 代码拆分为多个文件

我对 C++ 很陌生:我想将部分源代码放入另一个源文件中,并能够通过从第一个文件中调用它来执行第二个文件的源代码,这甚至可能吗?我感谢一些指导。

以下示例程序将 X 输出到 Linux 控制台的随机位置。

#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <chrono> //slow down
#include <thread> //slow down
using namespace std;

void gotoxy(int x,int y)       
{
    printf("%c[%d;%df",0x1B,y,x);
}

int main()                     
{
    int x=1;
    int y=1;
    int b=1;
    for (;;) { // I'd Like this Loop execution in a separate source File
        gotoxy (1,40);               
        cout << "X =" <<x <<endl;      
        cout << "Y =" <<y <<endl;      
        x = rand() % 30 + 1;           
        y = rand() % …
Run Code Online (Sandbox Code Playgroud)

c++ linux

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

如何设置QVariant结构?

我的QList结构包含QVariant:

typedef struct EXTRA_PARAMS_DEF {
    QString name;
    QVariant val;
    int channel;
} EXTRA_PARAMS;
QList<EXTRA_PARAMS> EP;
Run Code Online (Sandbox Code Playgroud)

为什么我不能QVariant用这个功能设置它?

int setParam(QVariant value)
{
    for (int i=0; i<EP.count(); i++)
    {
        EP.at(i).val = value;
    }
}
Run Code Online (Sandbox Code Playgroud)

错误是:

错误:C2678:'='二进制':找不到运算符,接受左侧部分

'const QVariant'类型的操作没有可接受的转换

我该QVariant怎么办呢?谢谢你的想法.

c++ qt

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

如何使用闭包在两个ViewController之间传递数据

我想知道如何使用闭包传递数据.我知道有三种类型的数据传递方法:

  • 代表

  • 通知中心

  • 关闭

我希望通过一个例子对闭包进行适当的澄清.

iphone closures ios swift swift3

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

QAction传染媒介没编译

我想创建一个QAction对象向量,我编写了以下代码:

std::vector<QAction> test;
for (quint16 tt = 0; tt < 5; tt++)
{
   test.push_back(QAction(this));
}
Run Code Online (Sandbox Code Playgroud)

编译这个显示错误:

错误C2248:'QAction :: QAction':无法访问类'QAction'中声明的私有成员

但是,如果我创建这样的QAction对象,它可以正常工作:

QAction test2(this);
Run Code Online (Sandbox Code Playgroud)

任何人都可以指出我的代码中的错误?

c++ qt

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