我创建了一个可编辑的 QCombobox,通过以下方式存储最后的输入:
\n\nQComboBox* input = new QComboBox();\ninput->setEditable(true);\ninput->completer()->setCompletionMode(QCompleter::PopupCompletion);\ninput->setMaxCount(5);\nRun Code Online (Sandbox Code Playgroud)\n\n现在我有两个问题:
\n\n我想将下拉菜单的大小限制为最后 5 个输入字符串。
这 5 个旧输入将全部显示在顶部的可编辑行下方。目前,旧的输入隐藏可编辑行。
对于第一个方面,调用 \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 }");\nRun Code Online (Sandbox Code Playgroud)\n\n但我不知道要更改哪些参数,只有最后 5 个条目全部显示在 QComboBox 的输入行下。
\n\n编辑
\n\n这是下拉菜单如何显示的两张图片。如您所见,我输入了 5 个条目,但编辑行被弹出窗口隐藏了:\n
在第二张图片中,编辑行位于标记条目“5”的后面。
\n给定两个(非常简化的)类:
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) 给出一个类似的数组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)
如何在不使用循环的情况下实现此目的?
我有一个大矢量vec大小n x 1(与n一个庞大的数字).所有值vec都是0或1.向量由大小块组成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矢量化并行化?提前致谢