标签: qt4

关闭 Qt 4.5 应用程序时,Visual Studio 报告检测到内存泄漏

我正在使用 Visual Studio 2008 在 Windows 上构建 Qt 4.5 应用程序。每当我在调试模式下运行应用程序然后关闭它时,Visual Studio 都会将以下内容打印到输出窗格:

检测到内存泄漏!
转储对象 ->
{696512} 位于 0x01981AB0 的正常块,24 字节长。
数据:< > 00 CD CD CD 00 00 00 00 00 00 00 00 00 00 00 00
{696511}正常块位于0x02E59B70,12字节长。
数据:<U2g U2g> B0 1A 98 01 E8 55 32 67 E8 55 32 67

输出报告了数百个这样的块。我在使用 Qt 4 的模型/视图框架时尤其注意到了这一点。Qt 实际上是否存在内存泄漏,或者在某些情况下 Visual Studio 会错误报告泄漏?

c++ memory-leaks qt4 visual-studio-2008

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

将缩放的 QImage 绘制到 QWidget 上时的伪像

我的主窗口具有以下绘图功能:

void MainWindow::paintEvent(QPaintEvent*)
{
    QImage sign(50, 50, QImage::Format_ARGB32_Premultiplied);
    QPainter p(&sign);
    p.setRenderHint(QPainter::Antialiasing, true);
    p.fillRect(sign.rect(), QColor(255, 255, 255, 0));
    p.setBrush(Qt::blue);
    p.setPen(Qt::NoPen);
    p.drawEllipse(0, 0, sign.width(), sign.height());
    p.end();

    QPainter painter(this);
    painter.drawImage(rect(), sign, sign.rect());
} 
Run Code Online (Sandbox Code Playgroud)

所以基本上,它会在 QImage 上绘制一个蓝色填充圆圈,然后将该 QImage 绘制到小部件上。然而,当我调整窗口大小时,我得到了奇怪的人工制品(在左上角)。它看起来是这样的:

原来的: 替代文本

更改窗口大小后: 替代文本

有谁知道这是为什么?

(我正在 Ubuntu 10.04 下工作,如果你感兴趣的话)

qt qt4

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

Qt4 css - 如何创建文件 .QSS?

我有个问题。

如何在我的项目文件夹中创建一个文件。.QSS?

在创建新文件的选项中没有这个扩展名!

我将非常感谢您的帮助。

谢谢你。

c++ qt qt4

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

如何在 PyQt 中调用多个对话框?

我有一个主对话框,在那个对话框上有一个按钮。单击按钮时,我想打开另一个对话框。

主对话框代码(在主对话框中单击按钮时调用的函数):

def add_host(self):
        x=add_host.Ui_Dialog1()
        x.main()
Run Code Online (Sandbox Code Playgroud)

默认功能:

if __name__ == "__main__":
    import sys
    global app
    app = QtGui.QApplication(sys.argv)
    Dialog = QtGui.QDialog()
    ui = Ui_Dialog()
    ui.setupUi(Dialog)
    Dialog.show()
    sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

辅助对话框(add_host.py)代码快照:

def main(self):
        app1 = QtGui.QApplication(sys.argv)
        Dialog1 = QtGui.QDialog()
        ui1 = Ui_Dialog1()
        ui1.setupUi1(Dialog1)
        Dialog1.show()
        sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

因此,当我运行代码时,它会打开辅助对话框,但是当我关闭它时,它会冻结,并收到以下错误消息:

 File "testbot.py", line 175, in add_host
    x.main()
  File "/home/ppp/ppp/add_host.py", line 74, in main
    sys.exit(app.exec_())
NameError: global name 'app' is not defined
Run Code Online (Sandbox Code Playgroud)

这确实有道理,但我不知道如何解决。我尝试了几种组合都没有成功,包括添加和删除app.exec_().

python qt4 pyqt pyqt4

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

Qt 的 QString::split() 的相反方法

是否有任何函数可以完成与QString::split()相反的工作。我的意思是我有一个数组或List,我想用QString 胶水添加它们。

c++ serialization qt qt4 pyqt

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

QTextEdit:如何保存用 QTextCursor 插入的图像?

我使用 QTextCursor 在 QTextEdit 中插入了几张图片,现在我应该如何保存整个内容?

我的第一个想法是遍历 QTextCursor 的所有位置,但我没有找到合适的界面来使用。

使用中的示例代码:

QTextCursor cursor = ui->textEdit->textCursor();
cursor.insertImage(QImage ("/secure/Common/Pictures/icons/gimp.svg"));
ui->textEdit->setTextCursor(cursor);

QTextDocument *document = ui->textEdit->document();
QStringList images;
QTextBlock b = document->begin();
while (b.isValid()) {
    for (QTextBlock::iterator i = b.begin(); !i.atEnd(); ++i) {
        QTextCharFormat format = i.fragment().charFormat();
        bool isImage = format.isImageFormat();
        if (isImage)
        {
            images << format.toImageFormat().name();
            qDebug() << document->resource(QTextDocument::ImageResource,
                                           QUrl(format.toImageFormat().name())).toByteArray().size();
        }
    }
    b = b.next();
}
Run Code Online (Sandbox Code Playgroud)

qt qt4

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

无法在 TreeView PyQt4 中单击时抓取项目?

我试图从树视图中获取字符串/对象。因此,当用户单击树视图中的任何项目时,我可以在终端上显示它。任何帮助表示赞赏。这是代码。当我单击树视图中的字符串/项目时,它会显示: PyQt4.QtCore.QModelIndex object at 0xb6b6c7d4 而不是 Linux

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4 import QtCore, QtGui

data = root = [

    ("Linux", [

        ("System",

                [("System name",[]),
         ("Kernel", []),
         ("Drivers", []),
         ("Memory", []),
         ("Processes", []),
                 ("Disk mounted", []), 
         ("Services Running", []),
         ("Installed Packages", [])]),
        #[("System name", [])]),

        ("Network",
        [("Nework confi.",[]),
        ("Interface test", [])]),

        ("PCI Devices",
        [("PCI devices", [])]),

        ("Logs", 
        [("Messages",[]),
        ("Dmesg", [])]),


        ])]

class Window(QWidget):

    def __init__(self):

        QWidget.__init__(self)

        self.treeView = QTreeView()


        self.model = QStandardItemModel()
        self.addItems(self.model, …
Run Code Online (Sandbox Code Playgroud)

python qt4 pyqt pyqt4

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

QTextStream stdin readline 不暂停输入

这是一个非常简单的应用程序来说明我遇到的问题。

#include <QTextStream>

int main()
{
    QTextStream cin(stdin);
    QTextStream cout(stdout);

    QString test;

    cout << "Enter a value: ";
    cout.flush();
    cin >> test;

    cout << "Enter another value: ";
    cout.flush();

    test = cin.readLine();
    cout << test;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我希望执行暂停并等待输入test = cin.readline();,但事实并非如此。如果我删除cin >> test;然后它暂停。

为什么这段代码的行为是这样的,我如何获得我想要的行为?

c++ qt4 qtextstream

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

Qt中的多重继承

如何也继承 QLabel 和 QPushButtonton,我尝试的显示错误消息

/home/test.cpp:206: error: reference to 'setText' is ambiguous
      setText(text);
      ^
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的:

class virtualLabel: virtual public QLabel
{
    Q_OBJECT
public:
    explicit virtualLabel(const QString& text="", QWidget* parent=0){}
    ~virtualLabel(){}

};

class virtualPushButton: virtual public QPushButton
{
    Q_OBJECT
public:
    explicit virtualPushButton(const QString& text="", QWidget* parent=0){}
    ~virtualPushButton(){}

};



class customLabel : public virtualLabel, public virtualPushButton
{
    Q_OBJECT
    // Q_DECLARE_INTERFACE
    //Q_INTERFACES(YourInterface OtherInterface)


public:
    explicit customLabel(const QString& text="", QWidget* parent=0);
    ~customLabel();

    QString folderName;

};
Run Code Online (Sandbox Code Playgroud)

任何帮助表示感谢谢谢

c++ linux qt qt4

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

使用 Qt4Agg 后端在 Matplotlib 中重置工具栏历史记录

我有一个带有 matplotlib 和多进程的单独绘图线程。现在,如果我以交互方式放大窗口,则 autoscale_view() 不再起作用(使用 autoscale() 修复)。但是工具箱中的“主页”按钮仍然不起作用:它似乎调用了 autoscale_view() 并且不显示更新的视图而是旧视图(在放大时)。示例代码:

import matplotlib
matplotlib.use("qt4agg")
from matplotlib import pyplot as plt
import multiprocessing

def reset_view():
    plt.get

    xdata = []
    ydata = []
    temp = 0

    test_ax = plt.gca()
    test_line, = plt.plot(xdata, ydata)
    plt.show(block=False)

    for i in range(10):
        temp = temp+1
        xdata.append(temp)
        ydata.append(temp)
        test_line.set_data(xdata, ydata)

        test_ax.relim()
        test_ax.autoscale(tight= False)
        plt.show(block=False)
        plt.pause(2)

plot_thread = multiprocessing.Process(target = reset_view, args = ())

reset_view()

if __name__ == '__main__':
    plot_thread.start()
Run Code Online (Sandbox Code Playgroud)

尝试在绘图期间放大,然后按主页按钮。有没有办法让主页按钮使用 autoscale() 而不是 autoscale_view() 或重置并更新工具栏历史记录,以便它不会跳回旧视图?

Ps:“主页”-按钮=重置原始视图

python qt4 matplotlib toolbar

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