我的应用程序正在使用 Qt。
我有一个继承QGraphicsPixmapItem的类。
在这些项目上应用变换(例如,旋转)时,项目的原点(或枢轴点)始终是左上角。
我想改变这个原点,例如,当设置项目的位置时,这实际上会改变像素图的中心。
或者,如果我应用旋转,旋转的原点将是像素图的中心。
我还没有找到一种直接用 Qt 来实现它的方法,所以我想像这样重新实现itemChange():
QVariant JGraphicsPixmapItem::itemChange(GraphicsItemChange Change, const QVariant& rValue)
{
switch (Change)
{
case QGraphicsItem::ItemPositionHasChanged:
// Emulate a pivot point in the center of the image
this->translate(this->boundingRect().width() / 2,
this->boundingRect().height() / 2);
break;
case QGraphicsItem::ItemTransformHasChanged:
break;
}
return QGraphicsItem::itemChange(Change, rValue);
}
Run Code Online (Sandbox Code Playgroud)
我认为这会起作用,因为Qt 的文档提到项目的位置及其变换矩阵是两个不同的概念。
但它不起作用。
任何的想法 ?
我需要遍历 aQMultiHash并检查与每个键对应的值列表。我需要使用可变迭代器,以便在满足特定条件时从哈希中删除项目。 该文档没有解释如何访问所有值,只是第一个。此外,API 仅提供一种value()方法。如何获取特定键的所有值?
这就是我想要做的:
QMutableHashIterator<Key, Value*> iter( _myMultiHash );
while( iter.hasNext() )
{
QList<Value*> list = iter.values(); // there is no values() method, only value()
foreach( Value *val, list )
{
// call iter.remove() if one of the values meets the criteria
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个模特
class TreeModel : public QAbstractItemModel
Run Code Online (Sandbox Code Playgroud)
我填充了我的TreeItem排除列== 1的实例.在第1列中,我创建了CheckBoxes:
QVariant TreeModel::data(const QModelIndex &index, int role) const {
if (!index.isValid())
return QVariant();
if (role != Qt::DisplayRole) {
if (role == Qt::CheckStateRole) {
if (index.column() == 1) {
if (index.row() == 1) {
return Qt::Unchecked;
} else
return Qt::Checked;
}
}
return QVariant();
}
if (role == Qt::DisplayRole) {
if (index.column() != 1) {
TreeItem *item = static_cast<TreeItem*>(index.internalPointer());
return item->data(index.column());
}
}
return QVariant();
} …Run Code Online (Sandbox Code Playgroud) 我想使用QMultiMap(源自QMap)来存储键/值对。由于我可以多次使用密钥,因此我更愿意使用QMultiMap.
假设我会按给定的顺序插入以下对:
"C" -> 5
"A" -> 10
"B" -> 77
"B" -> 1
"X" -> 314159
Run Code Online (Sandbox Code Playgroud)
在迭代地图时(最好使用 java 风格的迭代器),我需要保留相等键对的顺序。即,"B" -> 77并且"B" -> 1在迭代时应该完全按照插入顺序出现。不同的键之间的顺序无关紧要。
不幸的是,文档并没有说明这个细节。它说
使用 QMap,项目总是按键排序
但它没有说明是否/如何对相等的键进行排序。
是否QMap保留对的插入顺序同键或可以以某种方式保存?
我想让我的简单小程序尽可能不杂乱。目前我所有的延迟都像
try
{
TimeUnit.SECONDS.sleep(1);
}
catch(InterruptedException e)
{
}
Run Code Online (Sandbox Code Playgroud)
但它真的很杂乱。我想要某种功能,例如
try
{
TimeUnit.SECONDS.sleep(Delay);
}
catch(InterruptedException e)
{
}
Run Code Online (Sandbox Code Playgroud)
然后让它以某种方式被这样调用
delay(3)
Run Code Online (Sandbox Code Playgroud)
或者,只是摆脱try/catch一般的声明。那可能吗?
我已成功地将C++类暴露给QML.它已在Qt Creator中注册并找到.它的目的是连接到数据库,如下面的代码所示:
#ifndef UESQLDATABASE_H
#define UESQLDATABASE_H
#include <QObject>
#include <QtSql/QSqlDatabase>
class UeSqlDatabase : public QObject
{
Q_OBJECT
Q_PROPERTY(bool m_ueConnected READ isConnected WRITE setConnected NOTIFY ueConnectedChanged)
private:
bool m_ueConneted;
inline void setConnected(const bool& ueConnected)
{ this->m_ueConneted=ueConnected; }
public:
explicit UeSqlDatabase(QObject *parent = 0);
Q_INVOKABLE inline const bool& isConnected() const
{ return this->m_ueConneted; }
~UeSqlDatabase();
signals:
void ueConnectedChanged();
public slots:
void ueConnectToDatabase (const QString& ueStrHost, const QString& ueStrDatabase,
const QString& ueStrUsername, const QString& ueStrPassword);
};
#endif // UESQLDATABASE_H
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试isConnected()从以下QML代码调用方法时
import …Run Code Online (Sandbox Code Playgroud) 我有以下类,它代表数据结构中的记录:
#ifndef UECONNECTEDCLIENTRECORD_H
#define UECONNECTEDCLIENTRECORD_H
#include <QtGlobal>
#include <QObject>
#include <QHostAddress>
#include <QString>
class UeConnectedClientRecord : public QObject
{
Q_OBJECT
private:
/**
* @brief m_ueClientName
*/
QString m_ueClientName;
/**
* @brief m_ueClientAddress
*/
QHostAddress m_ueClientAddress;
/**
* @brief m_ueClientPort
*/
QString m_ueClientPort;
public:
/**
* @brief UeConnectedClientRecord
* @param parent
*/
explicit UeConnectedClientRecord(const QString& clientName=QString(),
const QHostAddress& clientAddress=QHostAddress(),
const QString& clientPort=QString());
/**
* @brief ueSetClientName
* @param name
*/
inline void ueSetClientName(const QString& name)
{ this->m_ueClientName=name; }
/**
* @brief …Run Code Online (Sandbox Code Playgroud) 如何为JMenuBar其中的JMenu对象和对象设置自定义背景颜色?我试过.setBackgroundColor,它不起作用!
我有一些颜色,RGB格式编码:121E31 hex.如何将此颜色传递给Java的Color类?
我想在QML中设置中心项ListView,因此我添加了以下代码ListView:
import QtQuick 2.0
import QtMultimedia 5.5
import QtQuick.Controls 1.3
import QtQuick.Extras 1.4
import QtQuick.Layouts 1.2
import QtQuick.Window 2.2
import QtTest 1.1
Rectangle {
id: ueKeypad
width: ueMainColumnLayout.implicitWidth+2*radius
height: ueMainColumnLayout.implicitHeight+2*radius
color: "grey"
radius: 8
border.color: "#99c6f0"
border.width: 4
ColumnLayout {
id: ueMainColumnLayout
anchors.fill: parent
anchors.margins: radius
spacing: 4
RowLayout {
id: ueTextLayout
Text {
id: ueStaffLoginText
text: qsTr("Staff Login")
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
font.family: "Padauk"
textFormat: Text.RichText
font.pointSize: 16
font.bold: true
color: ueKeypad.border.color
Layout.fillWidth: true
} …Run Code Online (Sandbox Code Playgroud)