如何让QTextEdit显示的内容与QTabWidget当前上党课内容页面显示的内容一致,并随着QTabWidget页面内容的改变而改变

成功的花, 人们只惊慕她现时的明艳! 然而当初她的芽儿, 浸透了奋斗的泪泉, 洒遍了牺牲的血雨!...
确定要删除当前文章?Access denied | www.programcreek.com used Cloudflare to restrict access
Please enable cookies.
What happened?
The owner of this website (www.programcreek.com) has banned your access based on your browser's signature (44d6a4-ua98).Qt程序中的主窗口通常具有一个中心窗口部件。从理论上来讲,任何继承自QWidget的类的派生类的实例,都可以作为中心窗口部件使用。
几种常见情形
QMainWindow的中心区域可以被任意种类的窗口部件所占用。下面给出的是可能的情形。
⒈ 使用标准的Qt窗口部件(Standard Widget)
像QWidget、Qlabel以及QTextEdit等等这样的标准窗口部件都可以用作中心窗口部件。
⒉ 使用自定义窗口部件(User-Define-Widget)
有时候,某些有特殊要求的应用程序需要在自定义窗口部件中显示数据,你可以把自定义的窗口部件作为中心窗口部件。例如,你的绘图编辑器程序程序就可以使用类似名为PhotoEditor的自定义窗口部件作为自己的中心窗口部件。
3. 使用一个带布局管理器的普通Widget
有时候,应用程序的中央区域会被许多窗口部件所占用。这时就可以通过使用一个作为所有这些其他窗口部件父对象的QWidget,以及通过使用布局管理器管理这些子窗口部件的大小和位置来完成这一特殊情况。
4. 使用切分窗口(QSplitter)
其实,这种情况是上一种情况的一个例子。多个窗口部件一起使用的另一种方法是使用QSplitter。我们把QSplitter作为一个容器,在其中容纳其它的窗口部件,这时的中心窗口部件就是一个QSplitter。QSplitter会在水平方向或者竖直方向上排列它的子窗口部件,用户可以利用切分条(splitter handle)控制他们的尺寸大小。切分窗口可以包含所有类型的窗口部件,包括其他切分窗口。
5. 使用多文档界面工作空间(QMdiArea)
如果应用程序使用的是多文档界面,那么它的中心区域就会被QMdiArea窗口部件所占据,并且每个多文档界面窗口都是它的一个子窗口界面。QMdiArea是在Qt4.3以后引入的一个支持多文档应用的类。
6. 使用工作空间部件(QWorkspace)
这种情况通常用于多文档应用程序中,这时应用程序主窗口的中心部件是一个QWorkspace部件或者它的子类化部件。但这种方法在Qt4.5以后将被废弃。后面我们还会讲到它。
创建和使用
一个Qt主窗口应用程序必须有一个中心窗口部件(Central Widget)。当你采用Qt Designer创建主窗口时,默认情况下,系统已经为你创建了一个中心窗口部件,它是子类化QWidget的。
结合代码可以方便的设置中心窗口部件,可以调用主窗口类的setCentralWidget()方法,它的原型如下:
void QMainWindow::setCentralWidget (
* widget )
它将把widget设置为主窗口的中心窗口部件。
创建中心窗口部件完整的代码示例如下:
QTextEdit *
text = new QTextEdit(this);
setCentralWidget(text);
Qt应用程序的主窗口管理着中心窗口部件,它会在合适的时候销毁这个中心窗口部件。每次程序调用setCentralWidget()方法时,先前存在的中心窗口部件将被新的所替换,而且主窗口会销毁原来的部件,无需用户处理。
要想在程序中获得并使用、设置中心窗口部件也很简单,通过调用主窗口类的centralWidget()方法即可实现,它的函数原型如下:
* QMainWindow::centralWidget () const
它将返回主窗口的中心窗口部件,如果中心窗口部件不存在,它将返回0。一个完整的示例代码如下:
QTextEdit * text = centralWidget();
//设置属性,但通常不需要
QT设置centralWidget布局
QT设置centralWidget布局设置之前是这样的,这时候即使设置了控件的布局,实际上控件大小还是不会跟这变,因为centralWidget没有设置布局。
需要在没有控件的空白区域,点击右键...
内嵌窗口大小不能正确读出来,setCentralWidget ( QWidget * widget ) !
如果没有用函数void QMainWindow::setCentralWidget ( QWidget * widget )将QWidget设为主窗口部件。如果只是new出来widget是固定大小,不...
PyQt学习笔记01-Qt基本概念进阶篇之窗口布局,对话框
Laying Out Widgets on a Form
Qt提供的的基本的Layout Manager包括:QHBoxLayout,QVBoxLayout,QGridLayout和...
QT初级错误:继承于QMainwindow的窗口需调用setCentralWidget
今天写第一个QT程序时,发现了一个问题,纯代码添加个按钮,再加入layout中,结果报错:
QWidget::setLayout: Attempting to set QLayout “” on M...
QMainWindow中setCentralWidget和takeCentralWidget组合使用
QMainWindow是做Qt开发最熟悉的控件啦,最近在做一个项目是由于调用的是一个封装好的库而无法直接使用Qt设计师设计界面只能使用代码码布局。主界面只能默认一个布局,当需要另外一个布局时就需要把之...
http://blog.csdn.net/qter_wd007/article/details/7028920
Qt程序中的主窗口通常具有一个中心窗口部件。从理论上来讲,任何继承自QWidg...
linux嵌入式下的QT图形界面开发(入门篇详解)
http://blog.sina.com.cn/s/blog_0pitn.html
一、Qt/Embedded 开发环境的安装
一般来说,居于Qt/Embedde...
QT之坐标系统
GUI操作系统都有其特定的坐标系统;我们本节要在坐标系统中进行窗口和部件的定位,定位类型分为3种:
1、顶级窗口部件的定位 2、窗口内部件的定位 3、窗口部件的大小设置
使用Qt Designer来设计界面
介绍Qt Designer,是一个直观可见的全方位 GUI 构造器,它所 设计出来的用户界面能够在多种平台上使用。它是 Qt SDK 的一部分,也是最为重要的开发 工具之一。利用 Qt Designe...
没有更多推荐了,#ifndef __TABDLG_H__ #define __TABDLG_H__
#include &QDialog&
class QW class QFileI class QTabW class QDialogButtonB
//常规选项卡 class GeneralTab : public QWidget {
GeneralTab(const QFileInfo &fileInfo, QWidget
*parent = 0); };
//许可权限 class PermissionsTab : public QWidget {
PermissionsTab(const QFileInfo &fileInfo,
QWidget *parent = 0); };
//程序 class ApplicationsTab : public QWidget {
ApplicationsTab(const QFileInfo &fileInfo,
QWidget *parent = 0);
//自定义Tab对话框 class TabDialog:public QDialog { public:
TabDialog(const QString &fileName, QWidget *parent
QTabWidget *tabW
QDialogButtonBox *buttonB };
#endif // __TABDLG_H__
tabdlg.cpp:
#include &QTabWidget& #include &QWidget& #include &QDialog& #include &QFileInfo& #include &QVBoxLayout& #include &QDialogButtonBox& #include &QLabel& #include &QLineEdit& #include &QDateTime& #include &QGroupBox& #include &QCheckBox& #include &QListWidget&
#include "tabdlg.h"
TabDialog::TabDialog(const QString &fileName, QWidget
*parent):QDialog(parent) {
QFileInfo fileInfo(fileName);
tabWidget=new QTabW
tabWidget-&addTab(new GeneralTab(fileName),trUtf8("常规"));
tabWidget-&addTab(new PermissionsTab(fileName),trUtf8("权限"));
tabWidget-&addTab(new ApplicationsTab(fileName),trUtf8("应用程序"));
buttonBox=new QDialogButtonBox(QDialogButtonBox::Ok|QDialogButtonBox::Cancel);
connect(buttonBox,SIGNAL(accepted()),this,SLOT(accept()));//OK
connect(buttonBox,SIGNAL(rejected()),this,SLOT(reject()));//Cancel
QVBoxLayout *mainLayout=new QVBoxL
mainLayout-&addWidget(tabWidget);
mainLayout-&addWidget(buttonBox);
setLayout(mainLayout);
setWindowTitle(trUtf8("Tab对话框")); }
//常规面板类构造函数实现
GeneralTab::GeneralTab(const QFileInfo &fileInfo,
QWidget *parent)
:QWidget(parent) {
QLabel *fileNameLabel = new QLabel(trUtf8("文件名:"));
QLineEdit *fileNameEdit = new QLineEdit(fileInfo.fileName());//去掉目录路径前缀后的
QLabel *pathLabel = new QLabel(trUtf8("路径:"));
QLabel *pathValueLabel = new QLabel(fileInfo.absoluteFilePath());//完整的路径名
pathValueLabel-&setFrameStyle(QFrame::Panel | QFrame::Sunken);//设置label的样式
QLabel *sizeLabel = new QLabel(trUtf8("大小:"));
qlonglong size = fileInfo.size()/1024;//size()返回字节大小
QLabel *sizeValueLabel = new QLabel(trUtf8("%1
K").arg(size));
sizeValueLabel-&setFrameStyle(QFrame::Panel | QFrame::Sunken);
QLabel *lastReadLabel = new QLabel(trUtf8("上次读取时间:"));
QLabel *lastReadValueLabel = new QLabel(fileInfo.lastRead().toString());
lastReadValueLabel-&setFrameStyle(QFrame::Panel | QFrame::Sunken);
QLabel *lastModLabel = new QLabel(trUtf8("上次修改时间:"));
QLabel *lastModValueLabel = new QLabel(fileInfo.lastModified().toString());
lastModValueLabel-&setFrameStyle(QFrame::Panel | QFrame::Sunken);
QVBoxLayout *mainLayout = new QVBoxL
mainLayout-&addWidget(fileNameLabel);
mainLayout-&addWidget(fileNameEdit);
mainLayout-&addWidget(pathLabel);
mainLayout-&addWidget(pathValueLabel);
mainLayout-&addWidget(sizeLabel);
mainLayout-&addWidget(sizeValueLabel);
mainLayout-&addWidget(lastReadLabel);
mainLayout-&addWidget(lastReadValueLabel);
mainLayout-&addWidget(lastModLabel);
mainLayout-&addWidget(lastModValueLabel);
//mainLayout-&addStretch(1);
setLayout(mainLayout);
//权限面板类 PermissionsTab::PermissionsTab(const QFileInfo
&fileInfo, QWidget *parent)
:QWidget(parent) {
QGroupBox *permissionsGroup = new QGroupBox(trUtf8("权限"));
QCheckBox *readable = new QCheckBox(trUtf8("可读"));
if (fileInfo.isReadable())
readable-&setChecked(true);//勾选
QCheckBox *writable = new QCheckBox(trUtf8("可写"));
if ( fileInfo.isWritable() )
writable-&setChecked(true);
QCheckBox *executable = new QCheckBox(trUtf8("可执行"));
if ( fileInfo.isExecutable() )
executable-&setChecked(true);
QGroupBox *ownerGroup = new QGroupBox(trUtf8("所有权"));
QLabel *ownerLabel = new QLabel(trUtf8("所有者"));
QLabel *ownerValueLabel = new QLabel(fileInfo.owner());
ownerValueLabel-&setFrameStyle(QFrame::Panel | QFrame::Sunken);
QLabel *groupLabel = new QLabel(trUtf8("组"));
QLabel *groupValueLabel = new QLabel(fileInfo.group());
groupValueLabel-&setFrameStyle(QFrame::Panel | QFrame::Sunken);
QVBoxLayout *permissionsLayout = new QVBoxL
permissionsLayout-&addWidget(readable);
permissionsLayout-&addWidget(writable);
permissionsLayout-&addWidget(executable);
permissionsGroup-&setLayout(permissionsLayout);//权限组
QVBoxLayout *ownerLayout = new QVBoxL
ownerLayout-&addWidget(ownerLabel);
ownerLayout-&addWidget(ownerValueLabel);
ownerLayout-&addWidget(groupLabel);
ownerLayout-&addWidget(groupValueLabel);
ownerGroup-&setLayout(ownerLayout);//所有权组
QVBoxLayout *mainLayout = new QVBoxL
mainLayout-&addWidget(permissionsGroup);
mainLayout-&addWidget(ownerGroup);
//mainLayout-&addStretch(1);
setLayout(mainLayout);
//应用程序选项卡类构造函数实现 ApplicationsTab::ApplicationsTab(const QFileInfo
&fileInfo, QWidget *parent)
:QWidget(parent) {
QLabel *topLabel = new QLabel(trUtf8("打开方式...:"));
QListWidget *applicationsListBox = new QListW
for (int i
= 1; i &= 30; ++i)
applications.append(trUtf8("应用程序 %1").arg(i));
applicationsListBox-&insertItems(0, applications);
QCheckBox *alwaysCheckB
if (fileInfo.suffix().isEmpty())
alwaysCheckBox = new QCheckBox(trUtf8("始终使用该程序"
"打开该类型的文件"));
alwaysCheckBox = new QCheckBox(trUtf8("始终使用该程序"
"打开此扩展名文件 '%1'").arg(fileInfo.suffix()));
QVBoxLayout *layout = new QVBoxL
layout-&addWidget(topLabel);
layout-&addWidget(applicationsListBox);
layout-&addWidget(alwaysCheckBox);
setLayout(layout); }
tabmain.cpp:
#include &QApplication& #include "tabdlg.h"
int main(int argc,char*
QApplication app(argc,argv);
TabDialog tabdlg("./src/tabmain.cpp");
tabdlg.show();
return app.exec(); }
qt使用tab管理多个界面
采用tab页来管理多个页面,并隐藏tab头
5-QT5多窗口切换以及所有对话框的实现
这里我要实现的是一个由多个窗口组成而且各个窗口之间可以切换的程序。
实现之前必须了解一些必备知识;
模态和非模态对话框的概念:
简单来说就是模态对话框,对话框之间相互不交互,例如退出提示框,而非模态对...
Qt5 TabWidget的TabBar大小设置
TabWidget-&tabBar()-&setStyleSheet(&QTabBar::tab{min-height: 30 min-width: 80}&);
Qt中QTabWidget常用
table-&setSelectionMode(QAbstractItemView::SingleSelection)
table.horizontalHeader()-&setResizeMo...
Qt如何弄出tab竖着写。
Qt 最近使用QTabwidget做不出想要的效果,竖着放,字是旋转九十度的。
-----|widget
-----|widget
-----|widget
转而使用QtListWidget和Qs...
QTabWidget标签页设置及获取
QTabWidget可用于多标签显示,鼠标选中的标签为当前活动标签页。
QTabWidget有个setCurrentIndex槽,可用于修改当前活动标签页。...
Qt5之QTabwidget
0、效果1、创建
这里,还关联了 点击每一个tab时触发的信号
= new QTabWidget();
QTabWidget之设置当前活动标签
QTabWidget有个setCurrentIndex槽,可用于修改当前活动标签页。
示例代码如下:
QTabWidget tabWg = new QTabWidget(thi...
qt 隐藏tab的一种处理办法
在使用tabWidget的过程中,想要隐藏个tab都不容易,什么hide都不行。
后来使用remove也坑,是直接移除还不好搞出来再!
最直接方法:
把tabwiget-&clear();!!直...
QT-选项卡控件
dialog.h:#ifndef DIALOG_H#define DIALOG_H#include &QDialog&#include&QTabWidget&...
没有更多推荐了,转载:, 本文出自:
转载请标明出处:, 本文出自:
tabwidget双击关闭功能,类似360浏览器。由于工作需要,显示到网上搜索了相关文章,提示重写doubleclick事件,然后发送tabCloseRequested(int) 信号
所以,马上自定义Qtabwidget类,重写mouseDoubleClickEvent方法,发现点击上面的tab没反应,点击下面的窗口反而有反应,尝试失败。
看会PYQT4手册,发现Qtabwidget有一个setTabBar方法,所以想,应该是重写tabbar的mouseDoubleClickEvent方法,测试成功。
上代码,再解释
#coding:utf-8
import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *
class KUnit:
@staticmethod
def run(name,C):
if name == "__main__":
import sys
app = QApplication(sys.argv)
obj.show()
sys.exit(app.exec_())
class KTabBar(QTabBar):
#自定义tabbar,实现双击关闭
def __init__(self,parent = None):
QTabBar.__init__(self,parent)
def mouseDoubleClickEvent(self, event):
#获取点击的tab
tabId = self.tabAt(event.pos())
#发送关闭信号和tabid
self.emit(SIGNAL("tabCloseRequested(int)"),self.tabAt(event.pos()))
QTabBar.mouseDoubleClickEvent(self, event)
class MyDialog(QDialog):
def __init__(self,parent = None):
QDialog.__init__(self,parent)
layout = QVBoxLayout(self)
self.setFixedSize(QSize(500,500))
self.tabwidget = QTabWidget()
layout.addWidget(self.tabwidget)
#设置tabwidget的bar
self.tabwidget.setTabBar(KTabBar())
#允许tab点击关闭
self.tabwidget.setTabsClosable(True)
self.tabwidget.addTab(QDialog(),"tab1")
self.tabwidget.addTab(QDialog(),"tab2")
self.tabwidget.addTab(QDialog(),"tab3")
self.tabwidget.addTab(QDialog(),"tab4")
self.tabwidget.addTab(QDialog(),"tab5")
#连接信号槽
self.connect(self.tabwidget, SIGNAL("tabCloseRequested(int)"),self.closeTab)
def closeTab(self,tabId):
#关闭置顶信号槽
self.tabwidget.removeTab(tabId)
KUnit.run(__name__,MyDialog)
上面的代码有3个类:
KUnit,调试用的
KTabBar,重写QTabBar控件
MyDialog,测试窗口
KUnit 不需要多解释了,
KTabBar 主要是重写 mouseDoubleClickEvent方法,重点是(获取到双击的tab)和(发送关闭信号)。通过tabAt(event.pos())获取双击的tab 的索引,tabAt方法也是查询手册发现的。然后就发送关闭信号。
MyDialog 类先布局,然后设置tabwidget的tabbar(setTabBar),然后开启点击关闭的功能(setTabsClosable),添加测试窗口,最后绑定信号槽,然后用自定义的closeTab方法接受传过来的tabId,最后调用 removeTab 方法关闭tab!
最后,自己还有个疑问,我是在tabbar发送的 tabCloseRequested(int) 信号,但是这个信号应该是tabwidget的,为啥没报错呢!求路过的大牛解答!
附件地址:
转载请标明出处: , 本文出自:【木木--MAIKA】
tabwidget双击关闭功能,类似360浏览器。由于工作需要,显示到网上搜索了相关文章,提示重写doubleclick事件,然后发送tabCl...
QTabWidget设置setTabsClosable(true)后所有加进来的tab上都会出现关闭按钮,然后利用QTabWidget的tabCloseRequested(int)信号实现tab的关闭...
QTabWidget
双击tab标签关闭对应的tab页 步骤:
1、重写QTabWidget2、调用tabBar()【因为该方法是受保护的,所以要重写】 获得tabbar,保存为m_bar 成员...
希望在一个图片窗口里利用tabwidget显示多幅图片,或者同时可显示图片和视频
图片显示通过:QGraphicsView, QGraphicsScene,QGraphicsPixmapItem
原文地址:
这个方法叫做“以假乱真法”
中心思想:把自带的TabWidget隐藏,自己创建一个左侧的竖型tab栏,添加tab监听,以此实现竖型tabwidg...
&# -*- coding: utf-8 -*-
from PyQt4.QtGui import *
from PyQt4.QtCore import QString...
设置QTabWidget标题页纵向文字横向排列的写法
from PyQt4 import QtGui, QtCoreclass HorizontalTabWidget(QtGui.QTabB...
本文是对《Python Qt GUI快速编程》的第9章的Tab标签页窗口的例子payment form用Python3+PyQt5+Qt Designer进行改写。
第一部分无借用Qt Design...
这段时间学习qt,今天看到了多文档(mdi),书中的例子使用QWorkspace添加QTextEdit作为编辑窗口。作为很简单的示例,很清晰。这时,我突然想到,能不能做的和chrome这样有选项卡呢?...
QTabWidget介绍
QTabWidget主要是用来分页显示的,每一页一个界面,众多界面公用一块区域,节省了界面大小,很方便的为用户显示更多的信息
1,创建四个QWidget
没有更多推荐了,

我要回帖

更多关于 当前没有适合你的内容 的文章

 

随机推荐