我想删除一个中的所有尾随空格字符QString.我在找什么做的Python函数str.rstrip()用QString.
我做了一些谷歌搜索,发现了这个:http://www.qtforum.org/article/20798/how-to-strip-trailing-whitespace-from-qstring.html
所以我现在所拥有的是这样的:
while(str.endsWith( ' ' )) str.chop(1);
while(str.endsWith( '\n' )) str.chop(1);
Run Code Online (Sandbox Code Playgroud)
有更简单的方法吗?我想在开头保留所有的空白.
如何使用Qt 4.6.1创建带有一些URL编码参数的HTTP POST请求?
我发现我可以创建一个QNetworkRequest,在那里设置所有参数并通过QNetworkAccessManagers post方法发送它.但是如何在请求中添加一些URL编码参数?
最后,我想使用Qt/C++ 访问Eve API.可以在此处找到Python示例:http: //www.eveonline.com/api/doc/example-python.asp
我使用类似的东西来管理它(仍然要重构并形成有用的东西):
QNetworkReply *requestApi(QNetworkAccessManager &nwam)
{
QNetworkRequest request(QUrl("http://api.eve-online.com/account/Characters.xml.aspx"));
request.setHeader(QNetworkRequest::ContentTypeHeader,"application/x-www-form-urlencoded");
QByteArray data;
QUrl params;
params.addQueryItem("userid","user");
params.addQueryItem("apiKey","key");
data.append(params.toString());
data.remove(0,1);
QNetworkReply *reply = nwam.post(request,data);
return reply;
}
Run Code Online (Sandbox Code Playgroud) 我想在我的跨平台PyQt4应用程序中添加下一个功能:当用户选择某个文件并选择"删除"操作时,该文件将被移动到回收站文件夹而不是永久删除.我想我可以使用Win32 API或类似的东西找到特定于Windows的解决方案,但我想知道在Ubuntu/Linux和MaxOSX上也可以通过PyQt4方法执行类似的操作.
我试图隐藏布局中的所有小部件.但看起来findChildren不适合布局.
这是我的示例代码:
QLayout * layout = widget -> findChild<QLayout *> (layoutName);
QList<QWidget *> list = layout -> findChildren<QWidget *> ();
cout << list.size() << endl;
Run Code Online (Sandbox Code Playgroud)
size是0,但在这个布局中我有一些小部件.但是,如果我尝试从父窗口小部件获取窗口小部件,相同的代码工作正常.
我如何从适当的布局中获取它们?
我有一个在Qt Creator中创建的简单项目(使用Qt SDK 1.1.4安装).它在Qt Creator中运行得很好,但如果我然后浏览到Windows中的输出目录并双击EXE,我将收到如下错误:
The program can't start because QtCored4.dll is missing from your computer.
Try reinstalling the program to fix this problem.
Run Code Online (Sandbox Code Playgroud)
这显然是因为Qt不在我的PATH中(我不希望它,如果我的计算机上有多个版本的Qt),Qt Creator/qmake没有将Qt DLL复制到项目输出.
我想要做的是使用qmake将必要的Qt文件复制到项目输出目录 - 无论它在哪里.我该怎么做呢?
(我尝试在qmake中创建一个自定义目标,但我不会太过分......)
更新2016年7月19日: 为了澄清,上述帖子涉及Qt4.在Qt5上,你应该考虑调用windeployqt.此Qt5工具将读取您的二进制文件,确定您需要哪些Qt5运行时文件,并将它们复制到二进制目录.另请注意,它将修复Qt5 :: Core库中特定于PC的绝对路径 - 因此,除非您想自己提供qt.conf文件,否则使用此工具基本上是强制性的.
我对手册感到困惑,我应该像这样工作:
{
QSqlDatabase db = QSqlDatabase::addDatabase (...);
QSqlQuery query (db);
query.exec (...);
}
QSqlDatabase::removeDatabase (...);
Run Code Online (Sandbox Code Playgroud)
正如文件所指出的,query或db将被自动解构.但这有效吗?
好吧,如果我db在一个类中缓存,如下所示:
class Dummy {
Dummy() {
db = QSqlDatabase::addDatabase (...);
}
~Dummy() {
db.close();
}
bool run() {
QSqlQuery query (db);
bool retval = query.exec (...);
blabla ...
}
private:
QSqlDatabase db;
};
Run Code Online (Sandbox Code Playgroud)
有时我会看到警告:
QSqlDatabasePrivate::removeDatabase: connection 'BLABLA' is still in use, all queries will cease to work.
Run Code Online (Sandbox Code Playgroud)
即使我没有打电话run().
是否可以在没有接收器实例的情况下将信号连接到静态插槽?
像这样: connect(&object, SIGNAL(some()), STATIC_SLOT(staticFooMember()));
QApplication::closeAllWindows()Qt文档中有一个带有[static slot]属性的函数.并且有一个从文档中使用它的示例:
exitAct = new QAction(tr("E&xit"), this);
exitAct->setShortcuts(QKeySequence::Quit);
exitAct->setStatusTip(tr("Exit the application"));
connect(exitAct, SIGNAL(triggered()), qApp, SLOT(closeAllWindows()));
Run Code Online (Sandbox Code Playgroud)
是否允许执行相同的操作但不传递实例变量(例如,当类只有静态函数时)?
class Some : public QObject {
Q_OBJECT
public slots:
static void foo();
private:
Some();
};
Run Code Online (Sandbox Code Playgroud)
也许Frank Osterfeld是对的,在这种情况下最好使用单例模式但我仍然感到惊讶为什么这个功能还没有实现.
更新:
在对话框中,tab按下该键时,焦点将更改为另一个小部件.在Qt中,是否有任何关于小部件失去焦点的信号?我可以用它来检查输入是否有效吗?如果没有,我可以设置焦点并要求用户重新输入吗?