小编dwj*_*dwj的帖子

LabVIEW中的异步DLL访问?

我有一个LabVIEW应用程序,当前通过DLL将数据发送到C++应用程序.我现在需要将数据从C++发送回LabVIEW应用程序.我可以从DLL调用中触发LabVIEW中的代码,还是需要定期轮询DLL以查看新数据是否在等待?

或者我是以完全错误的方式解决这个问题?

dll labview

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

Qt:使用INI文件和注释在Windows上进行QSettings

我有一个应用程序,我在Windows上使用Qt 4.5.2编写.我将一些设置存储在INI文件中,并使用QSettings加载和保存设置.我想在INI文件中有一些评论.

例如:

; Meta-info to store with the file
[General]
MainWindow\size=@Size(1280 600)
MainWindow\pos=@Point(0 300)
Debugging=true
Run Code Online (Sandbox Code Playgroud)

但是,当我加载设置文件时,我发现了

QSettings settings( "settings.ini", QSettings::IniFormat );
Run Code Online (Sandbox Code Playgroud)

评论被删除了文件.通过调用QSettings :: sync()加载后重写INI文件(这由构造函数自动完成).有没有办法在同步后保留评论?

抢先评论:

  • 我想在Windows中使用INI文件以实现未来的跨平台兼容性
  • 我想在文件中存储元信息,以便在应用程序之外进行参考
  • 我正在考虑将元信息作为INI的一部分并使用name = value规则,但更愿意将这些信息保留为注释

windows ini qt

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

如何将文件从安装程序复制到NSIS中的硬盘驱动器,但前提是它们尚不存在或者比现有文件更新?

目前我正在使用:

SetOutPath "$INSTDIR\folder\subfolder"
File /r ..\Output\*.*
Run Code Online (Sandbox Code Playgroud)

问题是重新安装所有文件时将被覆盖.

问题:

  1. 仅当目标目录中尚不存在文件时,如何从安装程序复制文件?

  2. 如何覆盖目标目录中比安装程序中的文件更旧的文件?

编辑:

我找到了这个宏:http://nsis.sourceforge.net/MoveFileFolder

file-io nsis

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

在QString中打印尾随零

我正在使用Qt并希望在标签中打印数据值(double); 然而,尾随的零被砍掉了.我知道在CI中可以使用printf("%0.1f",数据)来保留尾随零.

我查看了QString的arg函数,但只允许设置整个字段宽度.setNumnumber都允许设置精度,但这也不正确.

示例代码:

double data = 1.0;
label->setText( QString().number( data );
Run Code Online (Sandbox Code Playgroud)

qt string-formatting

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

将事件传递/转发到Qt中的子对象

我正在研究Qt应用程序,我遇到了将鼠标事件发送到我需要的问题.

这里是我所拥有的高级视图(每个级别还有其他事情需要视图和场景):

+----------------
| App Window       -- QMainWindow
| +--------------
| | View           -- QGraphicsView   --- Grabbing mouse events here for Mode 1
| | +------------
| | | Scene        -- QGraphicsScene
| | | +----------
| | | | Image      -- QGraphicsPixmap --- Want to grab mouse events here for Mode 2
| | | | 
Run Code Online (Sandbox Code Playgroud)

在模式1中,我在View级别抓取事件mousePressEvent.在模式2中,我想在图像级别抓取鼠标事件.在我在View类中重载mousePressEvent之前,我能够获取Image中的所有事件.现在我正在View中捕获我无法在Image中获取鼠标事件. 图像Scene中是私有的,我不想公开它.

这里没有继承权; 每个项目都是由其上方的对象创建的对象.

阅读这个问题Qt - 将事件传递给多个对象? …

events qt

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

线程中的QTimer - 事件未处理?

我有一个派生自QThread的对象,类定义包含Q_OBJECT宏.我在线程中创建了一个计时器,所以我可以在线程运行时偶尔进行一些检查; 但是,超时事件永远不会发生.

我也试过让计时器成为单一的,但没有发出任何事件.

默认情况下是在线程中处理事件还是我需要做其他事情才能处理它们?

这是我如何设置线程和计时器的代码:

void MyClass::run( void ) 
{ 
    checkTimer_chA = new QTimer( this ); 

    qDebug() << connect( checkTimer_chA, SIGNAL( timeout() ), this, SLOT( timerExpiry_chA() ) ); 

    checkTimer_chA->start( 1000 ); 

    // prevent multiple, simultaneous starts 
    if( !isRunning ) 
    { 
        qDebug() << "Thread: MyClass::run"; 
        isRunning = true; 

        while( isRunning ) 
        { 
            getData(); 
            processData(); 
            yieldCurrentThread(); 
        } 
    } 

    checkTimer_chA->stop(); 

    delete checkTimer_chA; 
}


void DAQ::timerExpiry_chA( void )
{
    qDebug() << "timerExpiry_chA";
    checkTimer_chA->stop();
}
Run Code Online (Sandbox Code Playgroud)

如果我添加QApplication :: processEvents(); 就在调用yieldCurrentThread()之前; 计时器按预期工作.但是,这对我来说似乎不对.

qt multithreading

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

标签 统计

qt ×4

dll ×1

events ×1

file-io ×1

ini ×1

labview ×1

multithreading ×1

nsis ×1

string-formatting ×1

windows ×1