标签: qtwidgets

Qt 5.3.QtWidgets:没有这样的文件或目录#include <QtWidgets>

我想编译Qt示例.我得到错误QtWidgets:没有这样的文件或目录#include

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets - does not help
QT += widgets                                   - does not help
INCLUDEPATH += /opt/Qt/5.3/Src/qtbase/include/  - does not help
Run Code Online (Sandbox Code Playgroud)

Qt 5.3.Ubuntu 14.04 x64.

c++ qt qmake qt5 qtwidgets

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

如何在 QT Designer 中激活 centralWidget

我在看这篇文章 如何使 Qt Widget 随着窗口大小而增长? 但是当我得到答案时,我被困在“激活”中央小部件上。我注意到一个带有红色圆圈的图标,所以我想这意味着它被禁用了。我一直在网上搜索试图弄清楚如何“激活”它,但我没有任何运气。

有人可以帮我吗?

c++ qt qtwidgets

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

在 QtCharts 上显示文本

我正在使用 QtCharts 类制作折线图。我希望能够在图表本身上添加注释/文本。我怎样才能做到这一点?我找到了一个类似于我想要的示例“ https://doc.qt.io/qt-5/qtcharts-callout-example.html ” 有没有更简单的方法?

c++ user-interface qt qtwidgets

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

如何在 Qt5 中将自定义小部件与模型/视图/委托一起使用?

在我当前使用的专有代码库中,有一个自定义列表视图(派生形式QListView)。

目前,当大量项目(> 10000)导致主线程冻结时,会出现问题。视图中的每个项目都是在 QtDesigner 中设计的自定义小部件。

为了渲染每一行,我们使用setIndexWidget,它在QAbstractItemModel::rowsInserted信号上调用。对于每个插入的行,为每个索引设置从first到自定义小部件。last

我尝试将此代码移植到 use QStyledItemDelegate,因为从实际模型中断开项目小部件似乎可以解决渲染缓慢的问题。

在这种情况下,Qt5 可以根据需要延迟渲染视图中的项目。在显示列表之前,我们不需要创建每个用于查看的小部件。

我使用派生自QStyledItemDelegate. 我在构造函数中创建一个列表项小部件,然后像这样覆盖绘制事件。

    void paint(QPainter *painter, const QStyleOptionViewItem &option,const QModelIndex &index) const override {
        auto baseWid = getBaseWidget(); // Get's list item widget pointer
        setSubEditorData(baseWid,index); // Set's it's state to display current item
        baseWid->resize(option.rect.size());
        QPixmap pixmap(option.rect.size());
        baseWid->render(&pixmap);
        painter->drawPixmap(option.rect, pixmap);
    }
Run Code Online (Sandbox Code Playgroud)

这对于静态内容来说已经足够了,但是我的小部件有复选框并且可以选择。

我真的不明白如何使其具有交互性,同时保留代表提供的好处(按需渲染等)。

我的问题是如何让委托处理用户事件?就像鼠标点击一样,选择也会发生变化。

涵盖委托的 Qt5 示例太简单了,我不明白如何使用委托绘制自定义小部件。

c++ qt qt5 qtwidgets

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

隐藏 Qt 选项卡的标签文本而不将文本设置为空字符串

我只需要一个QTabWidget带图标的:

如何在 Qt 中隐藏选项卡的标签文本?我无法将文本设置为空字符串 ( ""),因为我使用的是停靠的小部件 ( QDockWidget) 并且标签文本是自动设置的(如果小部件是浮动的,我需要它)。

但是在选项卡模式下,我只想显示(选项卡的)图标。可能的方法:

  1. 字体大小为0?
  2. 我需要创建我自己的 bar 类并像这里一样覆盖绘画事件

有什么更容易/更清洁的吗?

- - 编辑 - -

好的,“将窗口标题设置为空字符串,并将其重置为原始文本”方法有效。我正在topLevelChanged为此使用信号。然而,它有一些缺点,因为空文本仍然占据一些空间。另一个问题,文本工具提示消失了,我无法将其设置回来。

仍然消耗了一些空间

我目前正在尝试的是介于“文本空白”和普拉萨德席尔瓦的方法之间的东西。我尝试识别选项卡内的文本标签并将其大小设置为 0,然后重置它。它略有不同,但会保持文本完整。

顺便说一句,我在我的标签顶部看到一条线,知道这是什么(它来自哪里)?编辑:对此似乎没有“简单的方法”(样式表、属性),请参阅在 QTabBar 中隐藏底线

也许我会自己创建整个标签栏,因为自动生成的东西太难处理了(在这点上同意 PS)。

c++ qt qdockwidget qtabwidget qtwidgets

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

如何将两个标签字段对作为一行添加到 QFormLayout?

所以我有 QFormLayout 可以很好地管理我的 QLabel-QLineEdit 对。
问题是,我需要实现这样的目标: 在此处输入图片说明

水平边框/标题不是问题,但“街道”-“公寓”/“邮政编码”-“城市”对是。

所以我的问题是:如何将两对 QLabel-QLineEdit 作为一行添加到 QFromLayout?

如果 QFormLayout 无法实现,您对其他布局(我猜是 QGridLayout)有什么建议吗?

请记住,标签在翻译成其他语言后可以具有不同的大小比例。

提前致谢!

c++ qt5 qtwidgets

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

Windows上的QT高DPI支持

根据这里的文档http://doc.qt.io/qt-5/highdpi.htmlQT 5.4+引入了高DPI支持.但是,要么我缺少一些基本的东西,要么目前的支持仍处于非常早期阶段.我正在写一个全新的应用程序,所以我有机会从头开始做.我知道我必须使用布局而不是固定定位等,但总会出现我需要指定的情况,例如控件的最小/最大尺寸.我可以在编辑器中指定它们,但这些是设备像素.因此,如果我将Windows设置更改为使用150%DPI,则编辑器中的最小值/最大值将会太小.当然,我可以获得该比率并调整代码中的所有必需值,但是如果我必须手动完成所有操作,QT会给我什么样的高DPI支持?我的意思是前QT 5.4有什么不同?

然后一个有趣的是QT_DEVICE_PIXEL_RATIO环境变量.它完全符合我的需要,它将编辑器中设置的所有像素乘以一个因子.但为什么它是环境变量而不是每个应用程序设置?为什么它只支持2,3等的整数值,因为我们知道Windows有125,150%等设置,为什么它不能自动读取Windows设置并将自己设置为该值?

winapi qt dpi highdpi qtwidgets

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

pyQt:如何更新标签?

我用qtDesigner创建了这个简单的UI,我想用函数的值每10秒更新一次我的标签,但是我不知道怎么做.我尝试过不同的东西,但没有任何效果.

def example():
    ...
    return text
Run Code Online (Sandbox Code Playgroud)

用户界面:

class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(400, 300)
        self.label = QtWidgets.QLabel(Form)
        self.label.setGeometry(QtCore.QRect(165, 125, 61, 16))
        self.label.setObjectName("label")

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.label.setText(_translate("Form", plsupdatethis)

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    Form = QtWidgets.QWidget()
    ui = Ui_Form()
    ui.setupUi(Form)
    Form.show()
    sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

python qt-designer python-3.x pyqt5 qtwidgets

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

如何删除 QTreeView 缩进

我希望在每个嵌套级别的左侧都QTreeView 没有缩进。我试过设置QTreeView::setIndentation(0)。它按照我的意愿删除了缩进,但它也隐藏了树箭头。


默认行为:

  • 带压痕?
  • 带箭头?

默认行为


之后setIndentation(0)

  • 没有缩进?
  • 没有箭头?

在 setIndentation(0) 之后


期望的行为:

  • 没有缩进?
  • 带箭头?

期望的行为


那么我怎样才能达到第三个例子中显示的结果呢?有没有做这件事的任何标准的方式,否则我将不得不重新实现QTreeView::paintEvent()QTreeView::drawBranches()等等?

qt qtreeview qt5 qtwidgets

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

qmake 不添加小部件

我有一个简单的程序。我的程序是:

 #include <QApplication>
 #include <QLabel>

 int main(int argc, char *argv[])
{
 int rc ; 
    QApplication app(argc, argv);  
     QLabel *label = new QLabel("Hello Qt!");
    label->show();
     rc = app.exec();
     return(rc) ;
}
Run Code Online (Sandbox Code Playgroud)

我想在命令行中编译和构建此代码。我已经安装了 qt 和 mingw。

首先我的命令是:

  qmake -project
Run Code Online (Sandbox Code Playgroud)

然后我发出这个命令。

  qmake
Run Code Online (Sandbox Code Playgroud)

然后 qmake 创建 .pro 文件,它是:

 TEMPLATE = app
 TARGET = HELLO
 INCLUDEPATH += .

 # Input
 SOURCES += hello.cpp
Run Code Online (Sandbox Code Playgroud)

我认为这个文件必须包含'QT += widgets',但它没有。我不知道为什么。最后,我打电话给mingw make

它给出了错误。

当我添加 .pro 文件 QT += widgets 然后调用 mingw-make 时,它​​会工作并创建 .exe 文件。

那么我的问题是,为什么 qmake 会自动添加 QT += widgets …

c++ qt qmake qt5 qtwidgets

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