小编ale*_*sdm的帖子

QSqlDatabase和QSqlQuery的正确方法是什么?

我对手册感到困惑,我应该像这样工作:

{
 QSqlDatabase db = QSqlDatabase::addDatabase (...);
 QSqlQuery query (db);
 query.exec (...);
}

QSqlDatabase::removeDatabase (...);
Run Code Online (Sandbox Code Playgroud)

正如文件所指出的,querydb将被自动解构.但这有效吗?

好吧,如果我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().

database qt qt4 qtsql

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

使用带有inotify的read

我一直在研究inotify调用,但在读取界面方面我仍然有点不稳定.这些是关于如何使用read(2)正确连接inotify的最相关的资源:

它们都以相同的方式实现它们,它们首先定义以下大小:

#define EVENT_SIZE  ( sizeof (struct inotify_event) )
#define BUF_LEN     ( 1024 * ( EVENT_SIZE + 16 )
Run Code Online (Sandbox Code Playgroud)

然后他们以这种方式使用它们:

length = read( fd, buffer, BUF_LEN );  

if ( length < 0 ) {
    perror( "read" );
}  

while ( i < length ) {
    struct inotify_event *event = ( struct inotify_event * ) &buffer[ i ];
    /* some processing */
    i += EVENT_SIZE + event->len;
}
Run Code Online (Sandbox Code Playgroud)

现在,我们知道名称是其中的一部分,struct inotify_event并且它具有可变长度.那么,缓冲区中的最后一个inotify_event是否会被截断?

假设有1023个inotify_events,路径为16个字节,另一个路径为32个字节.那会发生什么?后来会被截断吗?或者内核是否会看到它不适合缓冲区并完全放弃?

c inotify linux-kernel

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

使用嵌入的私有类重写Qt类

在许多情况下,我想覆盖Qt类来扩展或修改它的行为.但是几乎所有Qt类都使用QNetworkDiskCache中的内部私有类,如QNetworkDiskCachePrivate.我知道这种方法有优点.但私人阶层存在一个巨大的问题:它使得超越班级变得更加困难.对于带有源代码的其他C++类库,我通常会覆盖一个类方法,从父类的实现中复制代码,并在此处进行小的修改以实现我想要的行为.但是,在Qt中,私有类不会导出,并且对派生类不可见.由于Qt类通过"d"成员维护私有类中的关键内部数据,因此私有内部类的不可见性使得行为扩展的可能性非常有限.您只能使用少数暴露的公共方法.

我尝试提取类的整个源文件并重命名类名和文件名.但Qt类库交织在一起,以至于在大多数情况下从中提取单个类也很混乱.

我在这里想念一下吗?或者Qt类在可扩展性方面真的很糟糕?

c++ qt

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

循环QProgressBar给出错误>> QObject :: installEventFilter:无法过滤不同线程中对象的事件

这个问题似乎已经多次以多种不同形式提出,但我没有找到一个与我的代码解决方案相关的问题.

当我运行它显示的程序时

QObject :: installEventFilter:无法过滤不同线程中对象的事件.

尽管如此,代码最初工作,但一段时间后炸弹和python发出错误说它停止工作.

我的代码如下:

from PyQt4.QtCore import *
from PyQt4.QtGui import *
from xml.etree import ElementTree as ET
import os , time

class LayoutCreator(QDialog):
    def __init__(self , parent=None):
        super(LayoutCreator, self).__init__(parent)
        self.Cameras_Update()


    def Cameras_Update( self ):                                             # Get all shots with camera plots and add them to the cameras_tree
        busyBar = sqrl_QtTools.BusyBar( text = "Gathering Camera Data" )    # Looping progress bar
        busyBar.start()

        # loop through folder structure storing data                

        busyBar.Kill()                                                      # Close looping progress bar    


class BusyBar(QThread): …
Run Code Online (Sandbox Code Playgroud)

pyqt qprogressbar qthread qobject

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

将 QProcess 初始化为已经运行的进程

我想知道是否可以创建一个QProcess并将其初始化为已经在运行的进程?

我的应用程序启动另一个应用程序。所以如果我的应用程序异常关闭,当它重新启动时,我想附加另一个应用程序。

qt process qprocess

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

pyqtSignal和QObject.receivers(..)

在发出之前,我需要检查信号是否存在侦听器.

class Test(QObject):
    test = pyqtSignal(str,dict)
    def run(self):
        if self.receivers(SIGNAL("test(str,dict)"):
           self.test.emit('blablabla',{})`
Run Code Online (Sandbox Code Playgroud)

信号连接到插槽右侧并成功发出信号.
检查签名信号时,该方法QObject.receivers()显示该信号未连接.
我理解,理由是签名不正确,我没有找到方法,指定信号的忠实签名.

python pyqt pyside

4
推荐指数
2
解决办法
1570
查看次数

QTextEdit如何将当前选定的文本行保持在屏幕上的相同位置

我希望我的文本光标始终位于QTextEdit的相同垂直位置.

举个例子,我说(*I*= cursor,====分隔编辑框).可以说*I*距离顶部20像素.

============================================
Today is a nice weather
I wanted to go *I*for a walk. 
But finaly got caught in a rain.
============================================
Run Code Online (Sandbox Code Playgroud)

现在,如果我将光标向下移动.

============================================
I wanted to go for a walk. 
But finaly got *I*caught in a rain.
Damn it.
============================================
Run Code Online (Sandbox Code Playgroud)

并不是说我不能简单地计算行数,因为我有嵌入表格,字体大小也不同.

qt cursor-position qtextedit

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

如何使用Qt从缓冲区加载图像?

因此类型:

QBuffer* buffer = new QBuffer(this->Conex);
QImage* image = new QImage ();
image->loadFromData (buffer->buffer());
Run Code Online (Sandbox Code Playgroud)

这对我不起作用.

c++ qt qt4 qimage

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

如何禁用QTableWidget滚动到选定的单元格?

目前,如果用户单击仅部分可见的单元格,则窗口会自动向上滚动,以便完全显示单元格.有没有办法阻止这样做呢?谢谢

qt qtablewidget

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

使用Qt阅读,编写和搜索文本文件

我坚持使用Qt(再次),我正在尝试从文本文件中读取文本.以下是文本文件包含的内容:

1001 James Bark
1002 Jeremy Parker
1003 Seinfeld Parker
1004 Sigfried FonStein
1005 Rabbun Hassan
1006 Jenniffer Jones
1007 Agent Smith
1008 Mister Anderson
Run Code Online (Sandbox Code Playgroud)

不要问这些名字的来源.我需要能够索引此文件并将其添加到表中.截至目前,该表如下所示:

|--------------------------------|
|          |First Name|Last Name | 
|--------------------------------|
|1001      |          |          |  
|--------------------------------| 
|          |          |          |
|--------------------------------|      
|          |          |          |
|--------------------------------|      
|          |          |          |      
|--------------------------------|
Run Code Online (Sandbox Code Playgroud)

但它需要看起来像这样

    |--------------------------------|
    |          |First Name|Last Name | 
    |--------------------------------|
    |1001      |James     |Bark      |  
    |--------------------------------| 
    |1002      |Jeremy    |Parker    |
    |--------------------------------|      
    |1003      |Seinfeld  |FonStein  |
    |--------------------------------|      
    |1004      |Rabbun    |Hassan    | …
Run Code Online (Sandbox Code Playgroud)

c++ qt

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