我在我的代码中实现了CMake但是我收到了错误
"无法为目标"Qt5 :: Widgets"指定链接库,这些链接库不是由项目构建的".
以下是CMakeLists.txt的内容:
#Specify the version being used aswell as the language
cmake_minimum_required(VERSION 2.6)
#Name your project here
project(eCAD)
#Sends the -std=c++11 flag to the gcc compiler
ADD_DEFINITIONS(-std=c++11)
#This tells CMake to main.cpp and name it eCAD
add_executable(eCAD main.cpp)
#include the subdirectory containing our libs
add_subdirectory (gui)
include_directories(gui)
#include Qt directories
find_package(Qt5Widgets)
find_package(Qt5Core)
find_package(Qt5Designer)
SET(QT_USE_QTDESIGNER ON)
#link_libraries
target_link_libraries(Qt5::Widgets Qt5::Core)
Run Code Online (Sandbox Code Playgroud) 我在实现捕捉时遇到 keyEvent 错误。错误如下:
error: invalid use of incomplete type 'class QKeyEvent'
switch(event->key())
Run Code Online (Sandbox Code Playgroud)
我的按键事件代码如下:
void Snap::keyPressEvent(QKeyEvent* event)
{
switch(event->key())
{
case Qt::Key_Left:
moveBy(-gridSize, 0);
break;
case Qt::Key_Right:
moveBy(gridSize, 0);
break;
case Qt::Key_Up:
moveBy(0, -gridSize);
break;
case Qt::Key_Down:
moveBy(0, gridSize);
break;
default:
QGraphicsItem::keyPressEvent(event);
}
}
Run Code Online (Sandbox Code Playgroud)
请帮我解决一下。
我想在QGraphicsScene中实现arc.我希望点击三个点时我的弧应被绘制,以便在点击三个点时绘制弧,其中第一个点将开始弧,第二个将是弧上的任何点,第三个将是弧的终点.我试过学习drawArc函数,但是对于startangle和spanangle感到困惑.我无法动态设置它们.请建议我继续下去.
我尝试了解决方案在我的项目中使用它,但是出现了以下错误:
error: cannot allocate an object of abstract type 'arc'
arcItem = new arc(++id, startP, midP, endP);
Run Code Online (Sandbox Code Playgroud)
你能帮帮我解决问题吗?我正在为我的项目提供一部分代码.在cadgraphicsscene的mousepress活动中,我做了以下事情.
cadgraphicsscene.cpp
void CadGraphicsScene::mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent)
{
// mousePressEvent in the graphicsScene
if(mouseEvent->button() == Qt::LeftButton)
{
switch (entityMode)
{
case ArcMode:
if (mFirstClick)
{
startP = mouseEvent->scenePos();
mFirstClick = false;
mSecondClick = true;
}
else if (!mFirstClick && mSecondClick)
{
midP = mouseEvent->scenePos();
mFirstClick = false;
mSecondClick = false;
mThirdClick = true;
}
else if (!mSecondClick && mThirdClick)
{
endP = mouseEvent->scenePos();
mThirdClick …Run Code Online (Sandbox Code Playgroud)