我有一个循环。我创建了一个QCheckBox并将其放入一个QTableWidget单元格中,一切正常。在循环的每一步中,我都connect为 myslot SLOT调用了一个函数,但只应用了最后一个QCheckBox实例。我用谷歌搜索了很多,发现很多人都有我的问题。我已经应用了他们的解决方案,但我的问题仍然存在。
for row in xrange(len(uniqueFields)):
instance = QtGui.QCheckBox(uniqueFields[row], findInstance.tableWidget)
print QtCore.QObject.connect(instance,
QtCore.SIGNAL(_fromUtf8("stateChanged (int)")),
lambda: findInstance.projectsInstance.myslot(
"TWCH", findInstance, instance.text(),
instance.checkState(), instance))
findInstance.tableWidget.setRowCount(findInstance.tableWidget.rowCount() + 1)
findInstance.tableWidget.setCellWidget(row, 0, instance)
Run Code Online (Sandbox Code Playgroud)
注意:我的connect函数 return True。
如何connect在枚举所有的循环中创建函数instances?
我从网站上下载了离线Qt 5.1.1(32位)软件包.刚安装在我的Ubuntu 12.04机器上.我在Qt安装之前安装了build-essentials.
我在Qt Creator中打开了一个新的应用程序/ GUI项目来玩.还没有添加任何东西,所以它只有它的默认文件.我尝试使用Creator Build按钮构建它,它会抛出错误:
:-1:错误:在搜索-lQt5Widgets时跳过不兼容的/home/Me/Qt5.1.1/5.1.1/gcc/lib/libQt5Widgets.so
:-1:错误:找不到-lQt5Widgets <
对于QtCore/Gui文件也是如此.
决定打开Qt中包含的一个示例.然后建造它.它也抛出了同样的错误.
怎么了?我的额外阅读说了一些关于QT += widgets在.pos文件中添加一行的内容,但这似乎是在版本检查器中自动出现的.
我以为这将开箱即用?我错过了什么?
我有一个UDP服务器使用以下代码:
void initialize()
{
connect(&_udpSocket, SIGNAL(readyRead()), this, SLOT(onUdpDatagram()));
_udpSocket.bind(QHostAddress::Any, 28283);
}
void onUdpDatagram()
{
qDebug() << "udp packet received!";
_udpSocket.write("Hello");
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,当收到UDP数据包时,我在日志中有以下错误:
QIODevice::write: device not open
Run Code Online (Sandbox Code Playgroud)
如何使UDP套接字可写?我尝试为连接到发件人地址和端口的答案创建另一个套接字,但发送将不再使用28283端口...
任何的想法?
有关信息:我在MacOS 10.9上使用Qt 5.2.1
我刚刚从这里阅读了有关pyqt5按钮的教程。和代码如下。有一个关于button.clicked.connect(self.on_click)和的问题@pyqtSlot()。如果我@pyqtSlot()从代码中删除,它仍然可以工作。但是,如果我button.clicked.connect(self.on_click)从代码中删除,该按钮将不起作用。那么@pyqtSlot()这段代码的功能是什么?
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import pyqtSlot
class App(QWidget):
def __init__(self):
super().__init__()
self.title = 'PyQt5 button - pythonspot.com'
self.left = 10
self.top = 10
self.width = 320
self.height = 200
self.initUI()
def initUI(self):
self.setWindowTitle(self.title)
self.setGeometry(self.left, self.top, self.width, self.height)
button = QPushButton('PyQt5 button', self)
button.setToolTip('This is an example button')
button.move(100,70)
button.clicked.connect(self.on_click)
self.show()
@pyqtSlot()
def on_click(self):
print('PyQt5 button click')
if …Run Code Online (Sandbox Code Playgroud) 目前我有这样的事情
float a = SomeQString.toFloat(); //QString has 2.37
Run Code Online (Sandbox Code Playgroud)
现在浮动是2.3690000031 ..
我想要的是2.3700000000 ..有关我怎么做的任何建议?另外我为什么得到2.369而不是2.37?
GetLastError()可以某种方式传递给FormatMessageW格式化的消息.目标是最终得到一个QString.这样做的正确和安全的方法是什么?
1)我想将 QVector 的指针传递给一个函数,然后用它做事。我试过这个:
void MainWindow::createLinearVector(QVector<float> *vector, float min, float max )
{
float elementDiff=(max-min)/(vector->size()-1);
if(max>min) min -= elementDiff;
else min += elementDiff;
for(int i=0; i< vector->size()+1 ; i++ )
{
min += elementDiff;
*(vector+i) = min; //Problematic line
}
}
Run Code Online (Sandbox Code Playgroud)
但是编译器给我 “不匹配的运营商=”为*(vector+i) = min;行。在 QVector 上执行此类操作的最佳方法是什么?
2) 该函数应该以 matlab : 运算符的工作方式线性分布向量上的值,例如 vector(a:b:c)。在 Qt 中执行这些事情的最简单和最好的方法是什么?
编辑:
有了这里的帮助,最初的问题就解决了。:)
我也改进了方法本身。通过使用线性插值而不是像上面那样的多次加法,可以大大提高精度。多次加法会累积误差,而在很大程度上可以通过线性插值消除误差。
顺便说一句,第一个函数中的 if 语句是不必要的,即使在多重加法方法中也可以通过稍微重新排列一些东西来删除。
void MainWindow::createLinearVector(QVector<double> &vector, double min, double max )
{
double range = max-min;
double n = vector.size(); …Run Code Online (Sandbox Code Playgroud) 假设这timer是一个对象QTimer,定时器的间隔是iInterval和定时器的超时信号连接到一个插槽sltTimeout().
我只是在想如果iInterval小于sltTimeout()运行时间会发生什么.结果会运行多个线程sltTimeout()吗?如果是这样,似乎可能导致对对象的非同步访问出现问题.
任何人都可以澄清一下吗?
我想用qt解码以下json:
{
"user": {
"name": "string"
}
}
Run Code Online (Sandbox Code Playgroud)
我试图用这个代码做,但不起作用:
QJsonDocument jsonResponse = QJsonDocument::fromJson(result.toUtf8());
QJsonObject jsonObject = jsonResponse.object();
QJsonArray jsonArray = jsonObject["user"].toArray();
foreach (const QJsonValue & value, jsonArray)
{
QJsonObject obj = value.toObject();
url = obj["name"].toString();
}
Run Code Online (Sandbox Code Playgroud) 我有一个名为Symbol的类,我想创建一个QVector子类(Symbols)来添加一些有用的方法.但是当我使用来自另一个类A的符号时,编译器会给出错误'符号没有命名类型'.
class Symbols: public QVector< Symbol >
{
public:
Symbols() {}
// Useful methods
QSymbol findSymbol(const QString &name);
// ...
};
class A
{
private:
Symbols symbols;
};
Run Code Online (Sandbox Code Playgroud)
它是否正确分类?
为什么在编译A类时出现'符号不命名类型'?