我想编译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.
我在看这篇文章 如何使 Qt Widget 随着窗口大小而增长? 但是当我得到答案时,我被困在“激活”中央小部件上。我注意到一个带有红色圆圈的图标,所以我想这意味着它被禁用了。我一直在网上搜索试图弄清楚如何“激活”它,但我没有任何运气。
有人可以帮我吗?
我正在使用 QtCharts 类制作折线图。我希望能够在图表本身上添加注释/文本。我怎样才能做到这一点?我找到了一个类似于我想要的示例“ https://doc.qt.io/qt-5/qtcharts-callout-example.html ” 有没有更简单的方法?
在我当前使用的专有代码库中,有一个自定义列表视图(派生形式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 示例太简单了,我不明白如何使用委托绘制自定义小部件。
我只需要一个QTabWidget带图标的:
如何在 Qt 中隐藏选项卡的标签文本?我无法将文本设置为空字符串 ( ""),因为我使用的是停靠的小部件 ( QDockWidget) 并且标签文本是自动设置的(如果小部件是浮动的,我需要它)。
但是在选项卡模式下,我只想显示(选项卡的)图标。可能的方法:
有什么更容易/更清洁的吗?
- - 编辑 - -
好的,“将窗口标题设置为空字符串,并将其重置为原始文本”方法有效。我正在topLevelChanged为此使用信号。然而,它有一些缺点,因为空文本仍然占据一些空间。另一个问题,文本工具提示消失了,我无法将其设置回来。

我目前正在尝试的是介于“文本空白”和普拉萨德席尔瓦的方法之间的东西。我尝试识别选项卡内的文本标签并将其大小设置为 0,然后重置它。它略有不同,但会保持文本完整。
顺便说一句,我在我的标签顶部看到一条线,知道这是什么(它来自哪里)?编辑:对此似乎没有“简单的方法”(样式表、属性),请参阅在 QTabBar 中隐藏底线
也许我会自己创建整个标签栏,因为自动生成的东西太难处理了(在这点上同意 PS)。
所以我有 QFormLayout 可以很好地管理我的 QLabel-QLineEdit 对。
问题是,我需要实现这样的目标:

水平边框/标题不是问题,但“街道”-“公寓”/“邮政编码”-“城市”对是。
所以我的问题是:如何将两对 QLabel-QLineEdit 作为一行添加到 QFromLayout?
如果 QFormLayout 无法实现,您对其他布局(我猜是 QGridLayout)有什么建议吗?
请记住,标签在翻译成其他语言后可以具有不同的大小比例。
提前致谢!
根据这里的文档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设置并将自己设置为该值?
我用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) 我希望在每个嵌套级别的左侧都QTreeView 没有缩进。我试过设置QTreeView::setIndentation(0)。它按照我的意愿删除了缩进,但它也隐藏了树箭头。
setIndentation(0):那么我怎样才能达到第三个例子中显示的结果呢?有没有做这件事的任何标准的方式,否则我将不得不重新实现QTreeView::paintEvent(),QTreeView::drawBranches()等等?
我有一个简单的程序。我的程序是:
#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 …
qtwidgets ×10
qt ×8
c++ ×7
qt5 ×5
qmake ×2
dpi ×1
highdpi ×1
pyqt5 ×1
python ×1
python-3.x ×1
qdockwidget ×1
qt-designer ×1
qtabwidget ×1
qtreeview ×1
winapi ×1