小编Iul*_*liu的帖子

如何在Qt5中检测QObject :: moveToThread()失败?

上的文档的QObject :: moveToThread()Qt5.3解释说,moveToThread()如果对象具有一个父方法可能会失败.我如何在代码中检测到这个失败?

我意识到只是确保我的对象没有父对象可能已经足够好了,但作为防御性编程实践,我想测试可能失败的所有调用的返回值.

编辑:我想在一些答案之后强调一下,我完全清楚我可以在调用moveToThread之前测试父是否为0.我正在寻找可行的方法来根据经验确定moveToThread呼叫实际上是成功的.

c++ multithreading defensive-programming return-value qt5

3
推荐指数
1
解决办法
1086
查看次数

Qt 5 编码问题(UTF-8、Windows-1250、Windows-1251)

我所有的源文件都是UTF-8转换的。

\n\n

我打开的所有文件都是 UTF-8。

\n\n

我的应用程序正在打开 UTF-8 编码文件,其中包含 3 种语言的翻译文本:英语、波兰语和俄语,并将数据保存到文件中,分为 3 个单独的编码块:Windows-1250(英语)、Windows-1250(波兰语)和Windows-1251(俄语)- 是的,没错,我在一个文件中混合编码类型,然后由知道如何处理该文件的第三方设备使用。

\n\n

Iv 得到了一个在 Qt4 下完美运行的测试程序,现在当我转移到 Qt5 时它停止运行(文本保存为 ?????????):

\n\n
    \n
  • 测试编码.cpp

    \n\n
    test_encoding::test_encoding(QWidget *parent) : QMainWindow(parent)\n{\n  ui.setupUi(this);\n\n  QString d;\n  QFile f(QDir::currentPath() + "/input.txt");\n  if( f.open( QIODevice::ReadOnly | QIODevice::Text ) )\n  {\n    d = f.readAll();\n    f.close();\n  }\n\n  QFile ff(QDir::currentPath() + "/output.txt");\n  if( ff.open( QIODevice::WriteOnly | QIODevice::Text ) )\n  {\n    QTextStream t(&ff);\n    auto cutf8 = QTextCodec::codecForName("UTF-8");\n    auto cw50 = QTextCodec::codecForName("windows-1250");\n    auto cw51 = QTextCodec::codecForName("windows-1251");\n\n        // ____Block 1\n    t.setCodec(cutf8);\n    t …
    Run Code Online (Sandbox Code Playgroud)

c++ utf-8 character-encoding qt4.8 qt5

3
推荐指数
1
解决办法
6967
查看次数

Qt paintEvent崩溃了

我试图在我的小部件上绘制简单的板.

当我试图自动化时,我的paintEvent崩溃了.我认为它是由for循环引起的,我是对的吗?如何以其他方式绘画?

void Widget::paintEvent(QPaintEvent *event)
{
QPixmap myPix( QSize(20,20) );
QPainter painter(this);
for(int i = 0; i < 100; i+5){
    painter.drawLine(QPointF(i,0),QPointF(i,max));
}
this->setPixmap(myPix);
}
Run Code Online (Sandbox Code Playgroud)

c++ qt for-loop paintevent

3
推荐指数
1
解决办法
952
查看次数

Qt:MouseMove无法运行

在我的Qt应用程序中,我需要跟踪鼠标移动.为此,我创建了一个eventfilter,我正确安装它,因为:

bool iArmMainWindow::eventFilter(QObject *obj, QEvent *event)
{
    if (event->type() == QEvent::MouseMove)//not working
    {
        iarm->printStatus("hi"); //this is for debugging

    }
    if (event->type() == QEvent::MouseButtonPress){
                //Here some staff working correctly
        }
//other staff
}
Run Code Online (Sandbox Code Playgroud)

问题是事件类型MouseMove不起作用.

任何的想法?

c++ mouse qt mouseevent mousemove

1
推荐指数
1
解决办法
4457
查看次数

应用窗口样式

虽然我的操作系统是Windows,但我希望我的应用程序看起来像Mac应用程序.我知道我可以轻松改变这种风格QApplication::setStyle.

QApplication::setStyle(new QWindowsVistaStyle)
Run Code Online (Sandbox Code Playgroud)

我知道Qt提供的MacStyle也是如此MacStyle

QApplication::setStyle(new QMacStyle)
Run Code Online (Sandbox Code Playgroud)

但是,似乎QMacSytle没有宣布.编译器无法识别它.而Qt网页上写道

Warning: This style is only available on Mac OS X because it relies on the HITheme APIs.
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以使用该Mac OS样式窗口?因为我需要使用它.

c++ qt qstyle

0
推荐指数
1
解决办法
1万
查看次数

Qt Creator Ubuntu版本奇怪的编译错误

我只是试图在Ubuntu版本中测试一些OpenCV使用方法,Qt而且我遇到了一些我遇到困难的编译器问题.

Mat imageSpecularReflectorRemoved ,edgesImage;
Mat img_object = imread(patternImageName);
removeSpecuralReflector(img_object,imageSpecularReflectorRemoved);
applyLaplacian(img_object, edgesImage);

std::vector <cv::Mat> listOfImagesToDisplay;
listOfImagesToDisplay.push_back(img_object);
listOfImagesToDisplay.push_back(imageSpecularReflectorRemoved);
listOfImagesToDisplay.push_back(edgesImage);
ImagesUtility imgUtil;
cv::Mat fullImage = imgUtil.makeCanvas(listOfImagesToDisplay,400,1);
Run Code Online (Sandbox Code Playgroud)

这是ImagesUtility类的接口文件(.h文件)

 class ImagesUtility
    {
    public:
        ImagesUtility();
        cv::Mat makeCanvas(std::vector<cv::Mat> vecMat, int windowHeight, int nRows);
    };
Run Code Online (Sandbox Code Playgroud)

这是ImagesUtility类的cpp文件

ImagesUtility::ImagesUtility()
{

}

cv::Mat makeCanvas(std::vector<cv::Mat> vecMat, int windowHeight, int nRows)
{

    return canvasImage;
}
Run Code Online (Sandbox Code Playgroud)

编译器错误是: 在此输入图像描述

知道这里发生了什么吗?

谢谢.

c++ ubuntu opencv qt-creator

0
推荐指数
1
解决办法
78
查看次数