小编Kap*_*a11的帖子

更改可编辑 QCombobox 的下拉位置

我创建了一个可编辑的 QCombobox,通过以下方式存储最后的输入:

\n\n
QComboBox* input = new QComboBox();\ninput->setEditable(true);\ninput->completer()->setCompletionMode(QCompleter::PopupCompletion);\ninput->setMaxCount(5);\n
Run Code Online (Sandbox Code Playgroud)\n\n

现在我有两个问题:

\n\n
    \n
  1. 我想将下拉菜单的大小限制为最后 5 个输入字符串。

  2. \n
  3. 这 5 个旧输入将全部显示在顶部的可编辑行下方目前,旧的输入隐藏可编辑行。

  4. \n
\n\n

对于第一个方面,调用 \xe2\x80\x99setMaxCount(5)\xe2\x80\x99 使 QComboBox 显示插入的5 个项目,但我希望它显示最后5 个项目。

\n\n

对于第二个方面,我需要按照我的想法改变风格。所以改变某事。像这些参数:

\n\n
  setStyleSheet("QComboBox::drop-down {\\\n              subcontrol-origin: padding;\\\n              subcontrol-position: bottom right;\\\n      }");\n
Run Code Online (Sandbox Code Playgroud)\n\n

但我不知道要更改哪些参数,只有最后 5 个条目全部显示在 QComboBox 的输入行下。

\n\n

编辑

\n\n

这是下拉菜单如何显示的两张图片。如您所见,我输入了 5 个条目,但编辑行被弹出窗口隐藏了:\n在此输入图像描述

\n\n

在此输入图像描述

\n\n

在第二张图片中,编辑行位于标记条目“5”的后面。

\n

qt qcombobox drop-down-menu

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

循环遍历所有 (i,j) 元素

给定两个(非常简化的)类:

class Rectangle {
  public:
    int iL,jL; // lower left point of rectangle
    int width, length; // width: in i-direction, length: in j-direction
};

class Circle {
  public:
    int iC,jC; // center-point of circle
    int radius;
};
Run Code Online (Sandbox Code Playgroud)

如果我想遍历 a 中的所有元素Rectangle,我可以简单地这样做:

for (int i = iL; i < iL-width; i--)
  for (int j = jL; j < jL+length; j++)
    doSomething();
Run Code Online (Sandbox Code Playgroud)

我的问题是实现一种智能方式来迭代Circle. 我目前的解决方案如下:

for (int i = iC-radius; i <= iC+radius; i++)
  for (int j = jC-radius; j …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm geometry

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

应用于数组的Linspace

给出一个类似的数组a = [ -1; 0; 1];.对于每个a(i),我需要计算线性间隔矢量linspace(min(a(i),0),max(a(i),0),3);,其中每个linspace-vector应存​​储到矩阵中:

A = [-1 -0.5 0;
      0   0  0;
      0  0.5 1];
Run Code Online (Sandbox Code Playgroud)

使用for循环,我可以这样做:

for i=1:3
    A(i) = linspace(min(a(i),0),max(a(i),0),3);
 end
Run Code Online (Sandbox Code Playgroud)

如何在不使用循环的情况下实现此目的?

matlab vectorization

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

MATLAB:复制数组中的零条目

我有一个大矢量vec大小n x 1(与n一个庞大的数字).所有值vec都是01.向量由大小块组成m,在每个块中,只包括这两个值中的一个.

为了确保这种情况,我遍历块中的每个start元素并将该值复制到相应块的所有条目中:

for i = 1:m:n
     if vec(i) == 1
          vec(i:i+m-1) = 1;
     else
          vec(i:i+m-1) = 0;
     end
end
Run Code Online (Sandbox Code Playgroud)

如何在不丢失循环的情况下实现这一目标,以便更好地使用MATLABs矢量化并行化?提前致谢

matlab loops vectorization

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