我的Qt应用程序有问题.我正试图从另一个类中发出一个信号(它是放置信号的嵌套类).
我已经将信号连接到一个插槽,应该没问题.但是当我尝试从这个嵌套类中发出这个信号时,我得到编译器错误:
没有对象就无法调用成员函数
怎么了?我在Qt文档中找到了它,但找不到合理的解决方案甚至解释.
简化的类定义如下所示.
class LogWriter : public QDialog
{
Q_OBJECT
public:
class Log : public QObject
{
Q_OBJECT
public:
bool print;
Log(bool _print, QString _color, QObject *obj = NULL)
: QObject(obj)
{
print = _print;
color = _color;
}
};
LogWriter(QWidget * parent = 0);
~LogWriter();
public slots:
void setMinVal();
void setMediumVal();
void setHighVal();
void cleanWindow();
void appendText(QString &text);
signals:
void signalLogAppend(QString);
};
Run Code Online (Sandbox Code Playgroud)
我LOW
使用以下函数调用将客户端代码中LogWriter 实例的信号连接到某个插槽:
connect(&LOW, SIGNAL(signalLogAppend(QString)),
this, SLOT(appendText(QString&)),
Qt::DirectConnection);
Run Code Online (Sandbox Code Playgroud) 我在 Windows 上有两个版本的 Python,想通过cmd
. 我试图制作它们的快捷方式python.exe
并将它们重命名为python26
和python33
(我还将它们的位置添加到PATH
),但不幸的是这不起作用。中的调用python26
或python26.lnk
输出not recognized as an internal command
。
有没有其他方法可以做到(如 Linux virtualenv),或者我错过了我的想法?
我有pthread_mutex_t的问题.当我尝试创建静态字段pthread_mutex_t,然后在静态函数中初始化它,最后在一些类方法中使用它我得到很多错误,如:
main.o: In function `LogWriter::initialize(pthread_mutex_t*)':
main.cpp:(.text._ZN9LogWriter10initializeEP15pthread_mutex_t[LogWriter::initialize(pthread_mutex_t*)]+0x7): undefined reference to `LogWriter::mutex'
Run Code Online (Sandbox Code Playgroud)
简化的类代码:
class LogWriter{
static pthread_mutex_t mutex;
static void initialize(pthread_mutex_t *mut){
LogWriter::mutex = PTHREAD_MUTEX_INITIALIZER;
//if(pthread_mutex_init(&(LogWriter::mutex), NULL) != 0){
//init failed
//}
}
public:
static LogWriter getInstance(string module_name){
LogWriter instance(module_name);
return instance;
}
LogWriter& operator<<(string a);
};
Run Code Online (Sandbox Code Playgroud)
我的问题是:为什么?我知道如果我将它定义为正常(非静态)字段,我将不会有任何问题.也搜索谷歌,但我找不到任何与此相关的材料.还创建指向静态pthread_mutex的指针,并在main函数中初始化,如下所示.