首页| 论坛| 消息

标题:Qt开发经验小技巧211-215
作者:liudianwu
日期:2022-04-29 13:39
内容:

211. QMainWindow 在对停靠窗体进行排列的时候,有些不常用的设置容易遗忘,建议将 QMainWindow 的头文件函数过一遍一目了然。
```cpp
//设置停靠参数,不允许重叠,只允许拖动
this->setDockOptions(QMainWindow::AnimatedDocks);
//将底部左侧作为左侧区域,底部右侧作为右侧区域,否则底部区域会填充拉伸
this->setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea);
this->setCorner(Qt::BottomRightCorner, Qt::RightDockWidgetArea);
//设置停靠窗体可以放到中间,相当于嵌套布局
this->setDockNestingEnabled(true);
```
212. 当我们在对QModelIndex取数据的时候,常规的角色的数据(QVariant类型支持to的比如toString、toInt、toDouble等)可以很方便的取出来,特定的数据类型需要用的万能取值模板函数 T value() 取出来。
```cpp
//显示文本
QString text = index.data(Qt::DisplayRole).toString();
//文本对齐
int align = index.data(Qt::TextAlignmentRole).toInt();
//文字字体
QFont font = index.data(Qt::FontRole).value();
//前景色
QColor color = index.data(Qt::ForegroundRole).value();
//背景色
QColor color = index.data(Qt::BackgroundRole).value();
```
213. 很多人以为拖曳只要在dropEvent事件就可以了,其实不行的,没有效果的,需要先在dragEnterEvent事件中执行event->accept()才行,不然根本没有效果,很多人尤其是初学者都挂在这里,我就是在这里摔了一跤,好疼!
```cpp
void frmMain::dropEvent(QDropEvent *event)
{
QList urls = event->mimeData()->urls();
}
void frmMain::dragEnterEvent(QDragEnterEvent *event)
{
if(event->mimeData()->hasFormat("application/x-qabstractitemmodeldatalist")) {
event->setDropAction(Qt::MoveAction);
event->accept();
} else {
event->ignore();
}
}
```
214. Qt5.6以后内置的是webengine浏览器内核,如果需要做web交互的话必须用到 qwebchannel.js 这个文件,此文件是Qt官方提供的,所以不 ..

回复 发表
主题 版块