您的位置:首页 > 编程语言 > Qt开发

qt学习笔记(四) qt编程时遇到的问题的总结

2011-11-27 17:27 281 查看
1、设置qt widget全屏显示

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
//w.show();
w.showFullScreen();
return a.exec();
}


2、获取屏幕分辨率

#include <QDesktopWidget>
#Include <QApplication>
void MainWindow::GetScreenInfo()
{
QDesktopWidget* desktopWidget = QApplication::desktop();
//获取可用桌面大小
//QRect deskRect = desktopWidget->availableGeometry();
//获取设备屏幕大小
QRect screenRect = desktopWidget->screenGeometry();

sceenSizeX = screenRect.width();
sceenSizeY = screenRect.height();

//获取系统设置的屏幕个数(屏幕拷贝方式该值为1)
//g_nScreenCount = desktopWidget->screenCount();
}


3、QGraphicsView添加背景图片:1

view = new QGraphicsView;
scene = new QGraphicsScene(0,0,800,480);
QPixmap pixmap(":/gear.png");
scene->addPixmap(pixmap);
view->setScene(scene);


3、QGraphicsView添加背景图片:2

view->setBackgroundBrush(QImage(":/gear.png"));
前提是将gear.png加入到资源中

4、设置无边框(标题栏)的应用程序

QApplication a(argc, argv);
MainWindow w;

w.setWindowOpacity(1);
w.setWindowFlags(Qt::FramelessWindowHint);
w.setAttribute(Qt::WA_TranslucentBackground);
w.show();


5 、QGraphicsPixmapItem,显示图片Item

scene = new QGraphicsScene(0,0,800,480);

QGraphicsPixmapItem *pixmapItem = new QGraphicsPixmapItem(QPixmap(":/gear.png"));
pixmapItem->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
scene->addItem(pixmapItem);


6 Q_OBJECT 问题

class NodeUI : public QGraphicsPixmapItem
{
Q_OBJECT
...
}
编译不通过

class NodeUI : public QGraphicsPixmapItem ,public QObject
{
Q_OBJECT
...
}
依然不通过

class NodeUI : public QObject,public QGraphicsPixmapItem
{
Q_OBJECT
...
}
编译通过!

7 ,编译出错:error: passing 'const QPointF' as 'this' argument of 'QPointF& QPointF::operator=(const QPointF&)' discards qualifiers

NodeUI *MainWindow::selectedNodeUI() const
{
QList<QGraphicsItem *> items = scene->selectedItems();
if (items.count() == 1) {
mmyPos = items.first()->pos();
//QPointF myPos = pos;
//mmyPos = pos.toPoint();
//mmyPos.setX(x);
//mmyPos.setY(y);
//mmyPos = QPoint(x,y);
//qDebug()<<"items.x:"<<nodePos.x()<<"items.y:"<<nodePos.y();
return dynamic_cast<NodeUI *>(items.first());
} else {
return 0;
}
}
修改为如下,问题解决;

NodeUI *MainWindow::selectedNodeUI()
{
QList<QGraphicsItem *> items = scene->selectedItems();
if (items.count() == 1) {
mmyPos = items.first()->pos();
//QPointF myPos = pos;
//mmyPos = pos.toPoint();
//mmyPos.setX(x);
//mmyPos.setY(y);
//mmyPos = QPoint(x,y);
//qDebug()<<"items.x:"<<nodePos.x()<<"items.y:"<<nodePos.y();
return dynamic_cast<NodeUI *>(items.first());
} else {
return 0;
}
}

8,QMap遍历问题

QMap插入时的顺序和最后得到的QMap遍历顺序可能是不通的,QMap所谓的有序是按照key内部自动升序,在不同的电脑上,顺序都可能不同。

对顺序有要求时,不可以用QMap,QHash就更不用说了。

待续。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: