我正在开发跨平台的Qt应用程序.虽然不是开源的,但它是免费软件.因此,我想将其作为编译二进制文件分发.
在Windows上没有问题,我将我的编译exe
与MinGW和Qt的DLL一起打包,一切都很顺利.
但是在Linux上存在一个问题,因为用户可能在他/她的系统中拥有与我的完全不同的共享库.
Qt部署指南提出了两种方法:静态链接和使用共享库.第一个产生巨大的可执行文件,并且还需要Qt所依赖的许多库的静态版本,即我必须从划痕重建所有这些库.第二种方法是基于在应用程序启动之前重新配置动态链接器,对我来说似乎有点棘手.
任何人都可以分享他/她在Linux下分发Qt应用程序的经验吗?我应该使用什么方法?我可能遇到什么问题?有没有其他方法来完成这项工作?
我需要根据某些条件在运行时更改我的Qt应用程序的停靠图标(在MacOS X中).
我在trolltech.com上找到了几个食谱:
QApplication::setIcon()
setApplicationIcon()
qt_mac_set_app_icon()
但它都不起作用:Qt 4.5中没有这样的方法/功能.
如何更改应用程序的停靠栏图标以及可以使用的图标格式?
谢谢.
我需要检查我的Qt GUI应用程序是否已在当前的X会话中运行.也就是说,我想禁止运行它的几个实例.但是应该允许不同用户或另一个(即远程)X服务器上的同一用户运行多个实例.
如何才能做到这一点?
谢谢.
考虑以下课程:
class Person {
public:
// I don't want any "char *" to be converted to Person implicitly!
explicit Person( const char * name ) : name_(name) {};
private:
std::string name_;
};
Run Code Online (Sandbox Code Playgroud)
还要考虑以下char*数据数组:
char STUDENT_NAMES[][20] = {
"Bart",
"Liza",
"Maggie"
};
Run Code Online (Sandbox Code Playgroud)
现在,我想根据这个数组创建std :: Person of Person.我所能发明的是使用std :: transform算法和手写函数对象:
struct CreatePerson : public std::unary_function<const char*,Person> {
Person operator() (const char * name) const {
return Person(name);
};
};
// ...
std::list<Person> students;
std::transform(
&STUDENT_NAMES[ 0 ],
&(STUDENT_NAMES[ sizeof(STUDENT_NAMES)/sizeof(STUDENT_NAMES[0]) ]),
front_inserter(students),
CreatePerson() …
Run Code Online (Sandbox Code Playgroud)