我想在Qt中创建一个具有以下功能的自定义小部件:
为了提供一个想法,这里是一个类似的小部件(而不是Qt)的图像:
我已经有一个正常工作的框架,并在QDesigner中公开.我现在需要让它扩展/崩溃,这似乎并不那么简单.
我尝试使用resize(),sizePolicy(),sizeHint(),但这不起作用:当框架折叠时,我得到以下值:
sizeHint: (500,20)
size : (500,20)
closestAcceptableSize: (518,150)
Painted size: (518, 150)
Run Code Online (Sandbox Code Playgroud)
QLayout :: closestAcceptableSize不是小部件的一部分,因此我无法更改它.
任何提示或/和代码片段来实现这一点?
编辑:这是一个简单的例子.除了必要的我删除了所有.
main.cpp示例
#include <QWidget>
#include <QPushButton>
#include <QVBoxLayout>
#include "section.hpp"
using namespace myWidgets;
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// Create the main Window
QWidget window;
window.resize(500,500);
window.setStyleSheet("QPushButton:{background-color:rgba(128,128,128,192);}");
// Create the main window layout
QVBoxLayout topLayout(&window);
QWidget *w1 = new QWidget();
w1->setStyleSheet("background-color:rgba(128,128,128,192);");
topLayout.addWidget(w1);
Section section(&window);
topLayout.addWidget(§ion);
QVBoxLayout inLayout(§ion);
QPushButton *button = …
Run Code Online (Sandbox Code Playgroud) 只有一个错误,直到我将其用于我的研究!
Warning: Z-order assignment: " is not a valid widget.
FILE: qvvideoreaderblockwidget.ui
Run Code Online (Sandbox Code Playgroud)
它附带没有行号.我试图找到,但没有看到一个开放式的部分.
我该怎么做才能正确编译这个库?
我正在使用Qt5 beta并尝试将基于QWidget的对象嵌入到QML中.目标是尽可能多地使用QML,并且只使用QML不能满足我需要的QWidget对象.我找到了一个解释如何为Qt4.7执行此操作的链接,但我没有找到任何解释如何在Qt5中执行此操作的信息.
http://doc.qt.digia.com/4.7/declarative-cppextensions-qwidgets.html
Qt5示例文件夹中的相同示例也可用于:
实例\ qtquick1 \声明\ cppextensions\qwidgets
不幸的是,这个例子使用QtQuick 1而不是QtQuick 2,我想使用Qt5的新功能.我实际上想嵌入一个qwt小部件,但作为第一步,我很乐意嵌入任何简单的基于QWidget的对象.
任何人都可以帮助我在Qt5/QtQuick 2下工作吗?
Qt 5.0提供了一个新QWindow
类.虽然这个类的文档非常全面,但我没有看到QWindow
与QWidget
类有什么不同,在哪种情况下你更喜欢前者.两者都提供了一种方便的方式,可以将各种事物可视化到屏幕上,两者都可以QPainter
用于绘图,并且两者都有一种与OpenGL交互的方式.
在API描述中,它说:
应用程序通常会将QWidget或QQuickView用于其UI,而不是直接使用QWindow.
所以这似乎不是窗口的优势.此外,它指出:
Windows可能会占用大量内存.通常的测量是宽度乘以高度乘以颜色深度.窗口可能还包括多个缓冲区以支持双缓冲和三缓冲,以及深度和模板缓冲区.
哪个似乎不赞成使用QWindow
.那么在什么情况下你会使用它?
如何设置QWidget
宽度?我知道setGeometry(QRect& rect)
这样做的功能,但是在那种情况下我应该使用geometry()
函数来获取我的前参数QWidget
,然后我应该增加宽度并使用setGeometry(..).有没有直接的方法,说:
QWidget aa;
aa.setWidth(165); //something like this?
Run Code Online (Sandbox Code Playgroud) 我需要让我在QTabWidget底部定位的标签更大.我们将使用触摸屏,因此默认尺寸有点小.
我认为没有简单的方法可以做到这一点(目前还没有找到任何好办法.我在QTabWidget中看到的与QTabBar相关的唯一方法受到保护,我认为不需要继承其他类比这个明确的目的).
题:
我想做的是将QTabBar设置为特定的大小.这可能吗?
除此之外,我唯一能想到的是子类化QTabWidget然后我可以通过扩展或覆盖此类的功能来控制QTabBar的大小.
谢谢.
我有一个自定义的QWidget,我很简单,不希望它出现在任务栏中.我有一个QSystemTrayIcon来管理退出/最小化等.
我想创建一些选项卡,我读到了这个答案:如何在PySide中添加选项卡
我在答案中使用代码并进行了一些更改.因为我的代码必须读取一些文件并从这些文件中获取我的选项卡的名称,以便在我的代码中添加for循环.这是我的代码.
from PySide import QtCore, QtGui
import sys
import dflash_controller as con
if __name__ == "__main__":
list = [['a', 3], ['b', 4], ['c', 5], ['d', 6]]
app = QtGui.QApplication(sys.argv)
wid = QtGui.QWidget()
grid = QtGui.QGridLayout(wid)
wid.setLayout(grid)
# setting the inner widget and layout
grid_inner = QtGui.QGridLayout(wid)
wid_inner = QtGui.QWidget(wid)
wid_inner.setLayout(grid_inner)
# add the inner widget to the outer layout
grid.addWidget(wid_inner)
# add tab frame to widget
wid_inner.tab = QtGui.QTabWidget(wid_inner)
grid_inner.addWidget(wid_inner.tab)
# create tab
for i, index in enumerate(list[0:]): …
Run Code Online (Sandbox Code Playgroud) 我想设置一个整数来存储在一个QWidget
,我认为setUserData
成员函数会做的伎俩,但我找不到任何文档.任何提示?
我正在使用构造函数QWidget(QWidget *parent)
.此父窗口小部件包含许多子窗口小部件.我需要在运行时从父级清除所有子窗口小部件.我怎样才能做到这一点?