小编Mat*_*ips的帖子

如何在Qt项目视图中为单个单元格设置委托?

相当困惑的是这个省略 - 但在Qt的QAbstractItemView类中,可以使用这些方法将QAbstractItemDelegate(即QItemDelegateQStyledItemDelegate)设置为整个视图,单行或单个列setItemDelegate*.此外,可以查询单个单元格的项目委托QAbstractItemView::itemDelegate(const QModelIndex&),以及行,列的委托.和整个观点.但是,似乎没有办法设置的项目委托给一个单独的单元格.我错过了什么吗?这应该是什么原因?

c++ model-view-controller qt delegates

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

C++:为函数的下一次调用保存变量值

有没有办法初始化函数中的变量并保存其值以进行下一次函数调用?

我在qt中进行应用,我有一个功能与信号连接.我希望该函数中的变量在另一个变量达到目标后发生变化.这是该函数的主体:

void objekt::advance(int phase)
{
if(!phase) return;

QPointF location = this->pos();
if (int(location.x())==200 || int(location.x())==-200)
{
    smijer=-smijer;

}
setPos(mapToParent(smijer,0));
}
Run Code Online (Sandbox Code Playgroud)

我将smijer变量定义为static int.但我不知道如何在程序启动时只初始化一次,以及如何在每次调用函数后保持其新值.

c++ static initialization

6
推荐指数
2
解决办法
2万
查看次数

如何将'this'作为参数传递给另一个没有循环依赖的类构造函数?

我正在考虑策略模式(Design Patterns,GoF94),其中建议传递给策略构造函数的上下文可以是包含策略(作为成员)本身的对象.但以下方法不起作用:

//analysis.h

class StrategyBase;
class Strategy1;
class Strategy2;
class Analysis
{
   ...
      void ChooseStrategy();
   private:
      StrategyBase* _s;
      ...
};

//analysis.cpp

void Analysis::ChooseStrategy()
{
   if (...) _s = new Strategy1(this);
   else if (...) _s = new Strategy2(this);
   ...
}

//strategy.h

#include analysis.h
...
Run Code Online (Sandbox Code Playgroud)

然后StrategyBase及其子类访问Analysis的数据成员.

这不起作用,因为您无法在定义之前实例化Strategy*类.但它的定义取决于分析的定义.那么你应该怎么做呢?将ChooseStrategy替换为

void SetStrategy(StrategyBase* s) { _s = s; }
Run Code Online (Sandbox Code Playgroud)

并在#include analysis.h和strategy.h的文件中进行实例化?这里最好的做法是什么?

c++ dependencies include strategy-pattern

5
推荐指数
2
解决办法
812
查看次数

什么时候使用TMP预先计算一个值实际上有用吗?

Scott Meyers在"Effective C++"中指出了在编译器中执行例如矩阵运算的能力,这是在模板类/函数中实现某些算法的一个原因.但是这些函数不能对运行时确定的参数进行操作,显然 - 它们仅适用于写入程序的数字,或者最好作为编译器的参数.程序编译完成后,每次运行时都会使用相同的输出值.在这种情况下,为什么不只是用常规(非模板化)程序计算该值,并在必要时将其写入原始程序?计算例如1000磅并不.编译器中的fft肯定比常规程序要好.

我能想到的最好的方法是,如果您需要为不同的客户端编译不同版本的程序,那么TMP可能会为您节省一些时间.但这是否真的需要每一个?

c++ templates metaprogramming

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

ISO/IEC 14882:2011是最终草案吗?

对不起,但我只想确定,因为我正考虑在某个时候买它.是这个吗?是否会对C++ 11进行任何后续更改,或者现在正式使用C++语言?(当然不包括最终的C++ 18,C++ 2x等.)维基百科说

C++ 11于2011年9月发布为"ISO/IEC 14882:2011"[4]

但是我对这个过程不够熟悉,无法确定我的问题的答案.

c++ c++11

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

NASM装配时循环计数器

我正在汇编中编写一个while循环,以便在Linux终端中使用nasm和gcc进行编译.程序比较x和y,直到y> = x,并报告结束时的循环次数.这是代码:

segment .data

out1    db "It took ", 10, 0
out2    db "iterations to complete loop. That seems like a lot.", 10, 0
x       db 10
y       db 2
count   db 0

segment .bss

segment .text

global main
extern printf

main:
    mov    eax, x
    mov    ebx, y
    mov    ecx, count
    jmp    lp         ;jump to loop lp

lp:
    cmp    ebx, eax   ;compare x and y
    jge    end        ;jump to end if y >= x
    inc    eax        ;add 1 to …
Run Code Online (Sandbox Code Playgroud)

c assembly gcc loops nasm

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

为字符串分配内存时获取 SIGSEGV/SIGABRT

真的不知道该怎么做 - 当我为字符串分配内存时,我的程序不断崩溃,最常见的是在这段无害的代码中,在其他上下文中从未引起过问题:

template <class T>
inline string to_string (const T& t, bool use_fixed = false)
{
    stringstream ss;
    if (use_fixed) ss.setf(ios::fixed, ios::floatfield);
    ss << t;
    return ss.str();
}
Run Code Online (Sandbox Code Playgroud)

具体来说,它在 'ss << t' 崩溃。t 是 int 类型,==0。堆栈跟踪的最后几行看起来像这样(唉,我太新了,无法发布屏幕截图):

0   ??  
1   malloc
2   operator new(unsigned int)
3   std::string::_Rep::_S_create(unsigned int, unsigned int, std::allocator<char> const&)
4   std::string::_Rep::_M_clone(std::allocator<char> const&, unsigned int)
5   std::string::reserve(unsigned int)
6   std::basic_stringbuf<char, std::char_traits<char>, std:allocator<char> >::overflow(int)
...
Run Code Online (Sandbox Code Playgroud)

现在我能想到的唯一可能与我的程序不同的事情是它有多个线程,并启动一个具有多个线程的子进程并调用此函数。我在 Ubuntu 10.04 上。谢谢你的考虑--

马特

c++ string malloc new-operator

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

动态分配C字符串数组

我不清楚为什么会失败,为什么它失败的地方:

std::string* s;
s = (std::string*)malloc(sizeof(std::string) * 10);
s[0] = "string0";
s[1] = "string1";
s[2] = "string2"; //Segmentation fault
Run Code Online (Sandbox Code Playgroud)

分配给s [0] - s [2]的字符串的大小是什么,或者是多少空间是malloc'ed无关紧要.QStrings也发生了同样的事情.我认为麻烦来自std :: string包含内部指针的事实,因此sizeof()只返回指针的大小,但是假定std :: strings的行为类似于值(=,==等.我不明白为什么这会导致失败.

另外,为了与其他代码兼容,我需要在这里使用C数组,而不是例如std :: vector.我正在寻找一个通用的解决方案(可以使用QString,QDateTime等),如果有的话.但我很高兴知道发生了什么.

编辑:得到了一个downvote ...这个问题出了什么问题?我确实先看了一会儿(包括SO),没有找到这个问题.

c++ arrays string pointers

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

如何避免二进制文件在linux中被多次启动?

我有一个二进制文件,它是一个守护进程,是用 C 语言开发的。我想在程序的开头添加一个检查,以保证该二进制文件仅启动一次。我的二进制文件在 Linux 上运行。

有什么建议么?

c linux

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

用C++生成随机数的代码

基本上我必须编写一个程序来生成随机数来模拟一对骰子的滚动.该程序应该在多个文件中构建.主函数应该在一个文件中,其他函数应该在第二个源文件中,并且它们的原型应该在头文件中.首先,我编写一个短函数,返回1到6之间的随机值,以模拟单个6面骰子的滚动.其次,我编写了一个假装通过调用此函数两次掷骰子的函数.我的程序首先询问用户应该制作多少卷.然后我写了一个函数来模拟这个骰子滚动这么多次,保持计数2,3,4,5,6,7,8,9,10,11,12的确切次数(每个数字是一对骰子的总和)出现在一个数组中.后来我编写了一个函数来显示一个使用这些计数的小条形图,对于144个卷的样本,理想情况下看起来如下所示,其中打印的星号数对应于计数:

2    3    4    5    6    7    8    9   10    11    12
*    *    *    *    *    *    *    *    *     *     *
*    *    *    *    *    *    *    *    *     *     *
*    *    *    *    *    *    *    *    *     *     *
*    *    *    *    *    *    *    *    *     *     *
     *    *    *    *    *    *    *    *     *     
Run Code Online (Sandbox Code Playgroud)

接下来,为了看看随机数生成器的运行情况,我编写了一个函数来计算滚动的平均值.将其与7的理想平均值进行比较.另外,打印出一个小表格,显示程序对每个卷筒的计数,基于给定卷筒总数的上述频率的理想计数,以及这些值之间的差异.列.到目前为止,这是我不完整的代码:"Compiler visual studio 2010"

int rolling(){    //Function that returns a random value between 1 and …
Run Code Online (Sandbox Code Playgroud)

c++ visual-studio visual-c++

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

Qt - QFileSystemModel如何获取文件夹中的文件(Noob)

我有以下代码列出listView中的文件:

fileModel = new QFileSystemModel(this);
ui->listView->setModel(fileModel);
ui->listView->setRootIndex(fileModel->setRootPath(filePath));
Run Code Online (Sandbox Code Playgroud)

我想获取路径中文件的列表/映射.如何才能做到这一点?

c++ qt

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