QuiLoader 动态加载 QMainWindow
2016-03-21 00:03
627 查看
今天公司上一个新的项目,要做一个类文本编辑器。我开始苦逼的做ui界面
设计好界面后,利用QUiLoader进行动态加载MainWindow.ui
void IDEMainWindow::InitiMainWidget()
{
QUiLoader loader;
QFile file(“:/ui/res/ui/MainWindow.ui”);
if(!file.open(QFile::ReadOnly))
{
logger()->debug(tr(“Failed to open UI file.”));
return;
}
QWidget *pWidget = loader.load(&file,this);
file.close();
}
在构造函数里调用,编译,运行,我去,怎么木有。检查代码、重新编译,还是木有出现设计好的ui。
哎,Google是个好基友,经过搜索后才发现原来看过的一帖子http://mobile.51cto.com/symbian-272128.htm
楼主是这么总结的,QUiLoader动态加载有两个限制:
限制1:UI 必须是QWidget窗体或QFrame部件,不能是其他类型,如QDialog,QMainWindow
限制2:UI 的顶层窗体必须具有布局,也就是窗体的布局不能是“打破布局”这一项。
如果不满足上述两个限制,QUiLoader是不能加载这样的UI文件的。
so ga,但是,伟大的、苦逼的程序猿们,怎么可能让QUiLoader动态加载怎么好的方法应用不到QMainWindow呢,
所以,再去Google进行查找!
果然,前辈高人,大有人在。看到了一个Loading a QMainWindow With QUiLoader,再次感谢Google
http://www.mail-archive.com/pyqt@riverbankcomputing.com/msg25912.html
我去,URL被和。谐了,但是难得到我们广大的翻。墙爱好者吗。原文如下
def setupUi(self, MainWindow):
loader = QUiLoader()
file = QFile(“…”)
file.open(QFile.ReadOnly)
centralwidget = loader.load(file, self)
centralwidget.setWindowFlags(Qt.Widget)
self.setCentralWidget(centralwidget)
It works, but the real centralWidget is nested into the main QMainWindow centralWidget, so to set my own centralWidget, I have to do:
self.centralWidget().setCentralWidget(…)
There is a better way to load a QMainWindow from a ui file via QUiLoader? Thank you!
原来如此,修改了代码,如下:
void IDEMainWindow::InitiMainWidget()
{
QUiLoader loader;
QFile file(“:/ui/res/ui/MainWindow.ui”);
if(!file.open(QFile::ReadOnly))
{
logger()->debug(tr(“Failed to open UI file.”));
return;
}
QWidget *pWidget = loader.load(&file,this);
file.close();
if(pWidget)
{
pWidget->setWindowFlags(Qt::SubWindow);
}
setCentralWidget(pWidget);
}
编译,运行,o了
感谢伟大的程序猿门…
设计好界面后,利用QUiLoader进行动态加载MainWindow.ui
void IDEMainWindow::InitiMainWidget()
{
QUiLoader loader;
QFile file(“:/ui/res/ui/MainWindow.ui”);
if(!file.open(QFile::ReadOnly))
{
logger()->debug(tr(“Failed to open UI file.”));
return;
}
QWidget *pWidget = loader.load(&file,this);
file.close();
QVBoxLayout layout = new QVBoxLayout; layout->addWidget(pWidget); setLayout(layout);
}
在构造函数里调用,编译,运行,我去,怎么木有。检查代码、重新编译,还是木有出现设计好的ui。
哎,Google是个好基友,经过搜索后才发现原来看过的一帖子http://mobile.51cto.com/symbian-272128.htm
楼主是这么总结的,QUiLoader动态加载有两个限制:
限制1:UI 必须是QWidget窗体或QFrame部件,不能是其他类型,如QDialog,QMainWindow
限制2:UI 的顶层窗体必须具有布局,也就是窗体的布局不能是“打破布局”这一项。
如果不满足上述两个限制,QUiLoader是不能加载这样的UI文件的。
so ga,但是,伟大的、苦逼的程序猿们,怎么可能让QUiLoader动态加载怎么好的方法应用不到QMainWindow呢,
所以,再去Google进行查找!
果然,前辈高人,大有人在。看到了一个Loading a QMainWindow With QUiLoader,再次感谢Google
http://www.mail-archive.com/pyqt@riverbankcomputing.com/msg25912.html
我去,URL被和。谐了,但是难得到我们广大的翻。墙爱好者吗。原文如下
def setupUi(self, MainWindow):
loader = QUiLoader()
file = QFile(“…”)
file.open(QFile.ReadOnly)
centralwidget = loader.load(file, self)
centralwidget.setWindowFlags(Qt.Widget)
self.setCentralWidget(centralwidget)
It works, but the real centralWidget is nested into the main QMainWindow centralWidget, so to set my own centralWidget, I have to do:
self.centralWidget().setCentralWidget(…)
There is a better way to load a QMainWindow from a ui file via QUiLoader? Thank you!
原来如此,修改了代码,如下:
void IDEMainWindow::InitiMainWidget()
{
QUiLoader loader;
QFile file(“:/ui/res/ui/MainWindow.ui”);
if(!file.open(QFile::ReadOnly))
{
logger()->debug(tr(“Failed to open UI file.”));
return;
}
QWidget *pWidget = loader.load(&file,this);
file.close();
if(pWidget)
{
pWidget->setWindowFlags(Qt::SubWindow);
}
setCentralWidget(pWidget);
}
编译,运行,o了
感谢伟大的程序猿门…
相关文章推荐
- GUI - Web前端开发框架
- 评价ui设计作品好坏的八个标准(界面/交互设计研究)
- 为Yahoo! UI Extensions Grid增加内置的可编辑器
- Cocos2d-x UI开发之文本类使用实例
- winform异型不规则界面设计的实现方法
- 谈谈对jquery ui tabs 的理解
- 在IE 浏览器中使用 jquery的fadeIn() 效果 英文字符字体加粗
- UI Events 用户界面事件
- jquery UI Datepicker时间控件的使用方法(基础版)
- Hallo.js基于jQuery UI所见即所得的Web编辑器
- 基于jQuery UI CSS Framework开发Widget的经验
- jquery ui 1.7 ui.tabs 动态添加与关闭(按钮关闭+双击关闭)
- jQuery UI设置固定日期选择特效代码分享
- Jquery ajax 同步阻塞引起的UI线程阻塞问题
- jQuery UI的Dialog无法提交问题的解决方法
- jQuery ui实现动感的圆角渐变网站导航菜单效果代码
- jquery UI Datepicker时间控件的使用方法(终结版)
- jquery UI Datepicker时间控件的使用方法(加强版)
- 关于jQuery UI 使用心得及技巧
- jquery ui dialog替代confirm实例分析