小编Iul*_*liu的帖子

Qt - '影子大厦'?

我有一个简单的问题 - 什么是影子建筑?我在Qt的Target Setup对话框中看过它,但不知道它做了什么或是否应该使用它.

它也出现在"常规"组下的"项目"选项卡中.

qt build-process desktop-application

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

用Qt删除文件夹及其所有内容?

如何删除文件夹及其所有内容Qt

我试过用:

QFile::remove();
Run Code Online (Sandbox Code Playgroud)

但似乎它一次只删除一个文件.

c++ qt

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

如何用Qt QPainter绘制线性渐变弧?

我正在尝试开发一个QProgressBar看起来像下图的自定义:

在此输入图像描述

我创建了一个扩展QProgressBar的类并实现了paintEvent():

void CircularProgressBar::paintEvent(QPaintEvent*) {

int progress = this->value();
int progressInDegrees = (double)(progress*360)/100;

int barWidth = 20;

QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing, true);

painter.setPen(QPen(Qt::black, barWidth, Qt::SolidLine,Qt::RoundCap));

painter.drawArc(barWidth/2, barWidth/2, this->width() - barWidth, this->height() - barWidth,
                90*16, progressInDegrees*-16);}
Run Code Online (Sandbox Code Playgroud)

这非常适合绘制圆形进度条,但是我遇到了条形线性渐变颜色的问题.我尝试QPenQLinearGradient对象创建一个,我尝试将QPainter画笔设置为一个QLinearGradient对象,但两种策略都不起作用.是否可以绘制QPainter具有线性渐变颜色的圆弧?

qt linear-gradients qpainter

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

使用CMake的OpenGL + Qt

我有一个Qt使用*.pro文件创建的项目,我需要将其迁移到CMakeLists.该项目使用简单的OpenGL动画来显示手的3D模型.我已经改变它使用CMake,但我遇到了2个问题.(程序编译但运行不正常)

  1. 程序的内存消耗从使用该*.pro文件的20-50MB传递到1.3GB使用CMake(也许某些库被完全加载或者什么?)
  2. 与使用*.pro文件的速度(每秒约3帧)相比,该程序运行速度非常慢(如每5-10秒一帧)

问题是,我做错了什么,我该如何解决?

这是*.pro文件:

QT += core gui opengl

TARGET   = RGBD_3D_Viewer
TEMPLATE = app


SOURCES +=  main.cpp\
            mainwindow.cpp \
            glwidget.cpp \
            glwidget_Camera.cpp \
            glwidget_Comm.cpp \
            glwidget_Extractors.cpp \
            glwidget_Rendering.cpp \
            glwidget_Video.cpp \
            glwidget_UI_Mouse.cpp \
            glwidget_OpenGL.cpp \
            mainwindow_Comm.cpp \
            mainwindow_GUI.cpp \
            model.cpp \
            cameraSet.cpp \
            model_Mesh.cpp \
            model_Skeleton.cpp \
            model_Skin.cpp \
            model_Extra_SkinningStuff.cpp \
            animation.cpp \
            animation_Transform.cpp \
            videoSequence.cpp \
            sequence.cpp \
            mainwindow_UI_Keyboard_Mouse.cpp …
Run Code Online (Sandbox Code Playgroud)

c++ opengl qt cmake

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

尽管控制台子系统设置,Visual Studio 2010 C++仍未显示控制台输出

我有一个创建控制台应用程序的项目,作为更大解决方案的一部分,但它不会在控制台上显示任何内容.我检查了/SUBSYSTEM:CONSOLE设置两个调试和发布,并试图既std::coutprintf,既不导致显示任何输出.

整个VS解决方案包含几个包含底层业务代码的静态库,以及三个可执行文件 - 主要GUI (QT/OpenGL),单元测试(boost)和此控制台应用程序.一些库类使用Qt(主要用于信号/插槽).GUI和单元测试都按预期运行(在测试的情况下,包括写入控制台输出).

我也尝试AllocConsole在main函数的开头添加一个调用- 这会导致出现一个控制台窗口,但是仍然没有写入 - 是的,我检查过代码正在调用cout!

还有什么可能是错的?某个地方还有其他设置吗?还是没有告诉我Qt重定向stdout

c++ qt cout visual-studio-2010

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

如何在 Qt 中向网格布局添加滚动条?

我有一个QGridLayout将包含一堆小部件。当循环添加了太多小部件并且它们无法全部放入页面时,问题就出现了。我想添加一个滚动条,但显示不正确。

此函数返回一个添加到主布局的选项卡,它包含网格布局:

QTabWidget *RegistersTab::createTab()
{
    QTabWidget *tab = new QTabWidget(this);

    std::vector<QGridLayout*> loVec; //to add to master layout

    for(int i=0; i<2; i++) //number of pages
    {
        QWidget *client = new QWidget(this); //this part breaks it
        QScrollArea *scrollArea = new QScrollArea(this);
        scrollArea->setWidget(client);

        QTabWidget *tabPage = new QTabWidget(client);

        QGridLayout *loGrid = new QGridLayout(client);
        tabPage->setLayout(loGrid);

        QString title = QString("Page %1").arg(i);
        tab->addTab(tabPage, title);

        loVec.push_back(loGrid);
    }
    m_loGridVec.push_back(loVec);

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

GridLayout载体是存在的,所以我可以添加小部件和后操纵它。目前,我的标签顶部有一个灰色框 - 所以有些东西坏了。如果我删除滚动区域并设置(client)(this).

我猜有一个简单的更正要进行?

编辑(如何制作标签):

ui->lo->addWidget(m_tab);

m_tab->addTab(createTab(), title); …
Run Code Online (Sandbox Code Playgroud)

c++ qt scrollbar

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

如何使用鼠标使用Qt更改网格布局单元的大小?

我使用网格布局(水平和垂直)。我喜欢这样的事实,即调整窗口大小时会填满整个窗口内容。但是此扩展程序管理不善。我经常想更改网格布局中仅一列的大小,而不更改窗口的大小。例如在Windows资源管理器中。有两列-目录的左侧列表及其内容在左侧的右边。而且我总是可以按一下它们之间的鼠标按钮,并拖动以更改彼此之间列的相互大小。

如何在Qt中做到这一点?

在此处输入图片说明

mouse layout qt grid-layout

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

删除QPushButton文本周围的选择

当我在表单上添加QPushButton时,我得到了这个:

在此输入图像描述

你可以看到丑陋的文字选择(进入按钮).我怎么能删除它?
这是我的这个按钮的CSS:

    enterButton->setStyleSheet("QPushButton { \
                                    padding: 6px; \
                                    background: #369; \
                                    color: white; \
                                    font-size: 13px;\
                                    border: 0; \
                                    border-radius: 3px; \
                                }\
                                QPushButton:hover { \
                                    background: #47a; \
                                }\
                                QPushButton:pressed { \
                                    background: #58b; \
                                }");
Run Code Online (Sandbox Code Playgroud)

谢谢!

css qt button stylesheet

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

Qt:当主窗口被模态QDialog阻挡时,如何关注从主窗口创建的无模式QDialog

在我的Qt应用程序中,我面临以下情况:当引发特定事件时,我显示无模式QDialog,要求用户进行确认.使用show()来自a的函数显示对话框QMainWindow.无论何时引发事件并且未显示其他模态QDialog,用户都可以单击确认按钮.不幸的是,如果在QDialog引发事件时可以看到模态,QDialog则无模式是无法访问的.这意味着用户无法单击确认按钮.以下代码是导致相同问题的简化版本在此示例中QMainWindow包含一个按钮,当单击按钮时,QDialog使用该exec()函数显示模态,同时a QTimer已启动.无论何时我QDialogQTimer经过之前关闭模态,都可以访问无模式对话框.如果我等到显示无模式对话框而没有关闭模态对话框,则无法访问无模式对话框(我需要先关闭模态对话框).

MainWindows代码:

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    m_pModeless = new DialogModal(this);
    connect(&m_qTimer,SIGNAL(timeout()),this,SLOT(TimerElapsed()));

}

MainWindow::~MainWindow()
{
    delete m_pModeless;
    delete ui;
} 

void MainWindow::TimerElapsed()
{
    m_qTimer.stop();
    m_pModeless->show();
    m_pModeless->activateWindow();
    m_pModeless->raise();
    m_pModeless->setFocus();
}

void MainWindow::on_pbStartTest_clicked()
{
    m_qTimer.start(10000);
    DialogModal d(this);
    d.exec();
}
Run Code Online (Sandbox Code Playgroud)

MainWindow标题:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QTimer>
#include "dialogmodal.h"

namespace …
Run Code Online (Sandbox Code Playgroud)

c++ qt modal-dialog modeless qdialog

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

Qt5.3.1如何添加状态栏

我正在win 7中的Qt5.3.1中开发小应用程序。我从主窗口中删除了状态栏,发现没有名为状态栏的小部件。请告诉我如何动态或从 IDE Qt Designer 添加状态栏。

qt5

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