我有一个应用程序QGraphicsView
,在屏幕中间有一个窗口.我希望能够使用鼠标滚轮滚动放大和缩小.
目前我已经重新实现QGraphicsView
并覆盖了鼠标滚动功能,因此它不会滚动图像(就像默认情况下那样).
void MyQGraphicsView::wheelEvent(QWheelEvent *event)
{
if(event->delta() > 0)
{
emit mouseWheelZoom(true);
}
else
{
emit mouseWheelZoom(false);
}
}
Run Code Online (Sandbox Code Playgroud)
因此,当我滚动时,如果鼠标滚轮向前移动,如果鼠标滚轮向后,我发出的信号为真.
然后我将这个信号连接到处理我的GUI内容的类中的插槽(缩放功能见下文).现在基本上我认为我的缩放功能根本不是最好的方法我已经看到一些人使用overriden wheelevent函数设置比例的例子,但我真的找不到完整的答案.
所以相反,我已经做到了这一点,但它无论如何都不是完美的所以我正在寻找这个稍微调整一下或者在轮子事件功能中使用比例的工作示例.
我初始化m_zoom_level
到0
在构造函数中.
void Display::zoomfunction(bool zoom)
{
QMatrix matrix;
if(zoom && m_zoom_level < 500)
{
m_zoom_level = m_zoom_level + 10;
ui->graphicsView->setTransformationAnchor(QGraphicsView::AnchorUnderMouse);
matrix.scale(m_zoom_level, m_zoom_level);
ui->graphicsView->setMatrix(matrix);
ui->graphicsView->scale(1,-1);
}
else if(!zoom)
{
m_zoom_level = m_zoom_level - 10;
ui->graphicsView->setTransformationAnchor(QGraphicsView::AnchorUnderMouse);
matrix.scale(m_zoom_level, m_zoom_level);
ui->graphicsView->setMatrix(matrix);
ui->graphicsView->scale(1,-1);
}
}
Run Code Online (Sandbox Code Playgroud)
正如你在上面看到的那样,我正在使用QMatrix
和缩放并将其设置为Graphicsview并将转换锚点设置为鼠标下方,但是如果我滚动加载它有时不能正常工作它只会开始放大(我认为这与int循环或其他东西有关).
正如我所说,帮助这个或鼠标下的规模的一个很好的例子将是伟大的.
有谁知道如何更改选项卡式视图底部栏的背景颜色?
当我选择每个标签栏项目时,我已经设置了改变图标颜色的强调色。
我尝试将背景设置为一种颜色,但它不会改变背景,并尝试将背景设置为图像只是为了确定,但这也没有任何作用。
想知道我是否需要以某种方式专门访问底部栏,然后在其上设置一个属性?
我仍然相对较新的C++,我似乎无法弄清楚以下两种编码函数的方式的差异,这可能需要一个参数,或者可能需要两个或三个或更多.无论如何,这是我的观点
功能过载:
int aClass::doSomething(int required)
{
//DO SOMETHING
}
int aClass::doSomething(int required, int optional)
{
//DO SOMETHING
}
Run Code Online (Sandbox Code Playgroud)
这有什么不同,默认值:
int aClass::doSomething(int required, int optional = 0)
{
//DO SOMETHING
}
Run Code Online (Sandbox Code Playgroud)
我知道在不同的情况下,一个人可能比另一个人更合适,但在选择这些选项时,我应该注意哪些事情?
我有一个在qss文件中设置样式的应用程序.所有小部件背景现在都是较暗的颜色,按钮也有自己的样式.
这一切都在整个软件中工作,除了在QWizard上,它似乎在向导底部有自己的按钮区域,默认的qt小部件颜色仍然应用于它.
我已经查看了可以在QWizard上应用样式的各种组件,但它们似乎都不是表单底部的这个按钮区域,只是想知道是否有人之前遇到过这个并找出我需要应用哪个对象改变这个区域颜色的风格.
TLDR - SEE EDIT
我正在Swift中创建一个测试应用程序,我想在我的应用程序文档目录中拼接多个视频AVMutableComposition
.
我在某种程度上成功地做到了这一点,我的所有视频都拼凑在一起,一切都显示出正确尺寸的肖像和风景.
但问题是,所有视频都显示在编辑中最后一个视频的方向上.
我知道要解决这个问题,我需要为我添加的每个曲目添加图层说明,但是我似乎无法做到这一点,我发现整个编辑的答案似乎是以纵向方式出现的风景视频只需按比例缩放以适应纵向视图,因此当我将手机侧面转动以查看风景视频时,它们仍然很小,因为它们已缩放为纵向尺寸.
这不是我想要的结果,我想要预期的功能,即如果视频是横向的,它在纵向模式下显示缩放,但如果手机旋转,我希望该横向视频填充屏幕(就像在查看时一样)照片中的风景视频)和肖像相同,因此在纵向观看时它是全屏的,当侧向转动时,视频会缩放到横向尺寸(就像在照片中查看肖像视频时一样).
总之,我想要的结果是,当查看具有横向和纵向视频的编辑时,我可以使用我的手机侧面查看整个编辑,并且横向视频是全屏的,纵向是缩放的,或者在查看相同的视频时肖像肖像视频全屏,风景视频按比例缩放.
通过所有答案,我发现情况并非如此,当从照片导入视频以添加到编辑时,它们似乎都有非常意外的行为,并且在添加使用前置摄像头拍摄的视频时具有相同的随机行为(至明确我目前的实施视频从图书馆导入和"自拍"视频出现正确的大小没有这些问题).
我正在寻找一种旋转/缩放这些视频的方法,以便它们始终以正确的方向和比例显示,具体取决于用户握住手机的方向.
编辑:我现在知道我不能在一个视频中同时拥有横向和纵向方向,所以我正在寻找的预期结果是以横向方向制作最终视频.我已经想出如何切换所有的方向和比例,以获得一切相同的方式,但我的输出是一个肖像视频,如果有人可以帮助我改变这,所以我的输出是景观,将不胜感激.
以下是我获取每个视频说明的功能:
func videoTransformForTrack(asset: AVAsset) -> CGAffineTransform
{
var return_value:CGAffineTransform?
let assetTrack = asset.tracksWithMediaType(AVMediaTypeVideo)[0]
let transform = assetTrack.preferredTransform
let assetInfo = orientationFromTransform(transform)
var scaleToFitRatio = UIScreen.mainScreen().bounds.width / assetTrack.naturalSize.width
if assetInfo.isPortrait
{
scaleToFitRatio = UIScreen.mainScreen().bounds.width / assetTrack.naturalSize.height
let scaleFactor = CGAffineTransformMakeScale(scaleToFitRatio, scaleToFitRatio)
return_value = CGAffineTransformConcat(assetTrack.preferredTransform, scaleFactor)
}
else
{
let scaleFactor = CGAffineTransformMakeScale(scaleToFitRatio, scaleToFitRatio)
var concat = CGAffineTransformConcat(CGAffineTransformConcat(assetTrack.preferredTransform, scaleFactor), CGAffineTransformMakeTranslation(0, UIScreen.mainScreen().bounds.width / …
Run Code Online (Sandbox Code Playgroud) 我试图在c ++控制台应用程序中打印一个字符串到控制台.
void Divisibility::print(int number, bool divisible)
{
if(divisible == true)
{
cout << number << " is divisible by" << divisibleBy << endl;
}
else
{
cout << divisiblyBy << endl;
}
}
Run Code Online (Sandbox Code Playgroud)
我有正确的包含等,这个错误,我相信只是我只是不知道如何打印到c ++控制台,我想这不是这样做的方式
编辑:抱歉忘了提到divisiblyBy是字符串
我在Qt中有一个UI应用程序,我有几个运行大规模SQL查询的函数,返回数千个结果.
当单击运行此查询的按钮时,UI窗口立即进入"无响应"但是我可以从控制台输出中看到所有内容实际上仍在后台运行.一旦函数结束,数据就会按预期呈现,并且UI再次响应并且功能完全正常.
我知道这是因为由于大量的结果,函数循环了数千次,但我希望我可以放入一个加载条,随着搜索的进行,而不是仅仅锁定窗口让它看起来像程序已经崩溃.AFAIK我没有内存泄漏所以有人有任何建议吗?
哦,我也认为它不是内存泄漏,因为当我点击该按钮任务管理器显示只有几MB的内存用于此过程和处理器绝不是最大化
我的文档目录中有一个包含图像和视频的文件夹,在我的应用程序中,我有一个集合视图,显示每个单元格中的图像.
我用一个返回UIImage的加载图像函数完成了这个
// Get the UI Image from the path passed in
let image = UIImage(contentsOfFile: path)
if image == nil
{
print("No Image at this path");
}
else
{
return image
}
Run Code Online (Sandbox Code Playgroud)
然而,我似乎无法找到与视频等效的内容,理想情况下,我希望它显示为视频播放器中的内容,例如在相册中,您会看到视频的静止视图,其上有一个小的播放按钮,当点击播放视频时.
如果没有纯粹能够从指定路径的视频中获取静止,我必须返回,因为UIImage
我可以显示它会没问题.
我是iOS的新手,所以只是想知道是否有一些类似于UIImage
视频的类型,这意味着我可以加载并在集合视图上显示它.
尝试将一些视频合并在一起并将它们作为单个文件导出,从查看教程/示例看,一切似乎都是正确的但是我的AVAssetExportSession似乎永远不会完整,我的视频文件永远不会被导出,任何关于明显错误的帮助我很失望,我将非常感激.
以下是合并视频的功能
注意循环中的'视频'是一个成员变量var videos = [AVAsset]()
,它在调用merge之前会被填充(我会检查它).
private func merge()
{
// Create AVMutableComposition to contain all AVMutableComposition tracks
var mix_composition = AVMutableComposition()
var total_time_seconds = 0.0
var tracks = [AVCompositionTrack]()
// Loop over videos and create tracks, keep incrementing total duration
for video in videos
{
// Create the composition track for this video
let track = mix_composition.addMutableTrackWithMediaType(AVMediaTypeVideo, preferredTrackID: Int32(kCMPersistentTrackID_Invalid))
// Add video duration to total time
total_time_seconds = total_time_seconds + video.duration.seconds
// Add track to array of …
Run Code Online (Sandbox Code Playgroud) 我希望能够在我的一个视图上按下按钮时显示一个新视图。
从我看过的教程和这里的其他回答问题来看,似乎每个人都在导航视图中使用导航按钮,除非我误认为导航视图是在我的应用程序顶部给我一个菜单栏右箭头的那个,所以我没有不想要那个。当我将导航按钮放在不是 NavigationView 子项的视图中时,它只是在 UI 上被禁用,我无法单击它,所以我想我不能使用它。
我见过的其他示例似乎使用了演示链接/按钮,它们似乎显示了一种弹出式视图。
我只是在寻找如何单击一个常规按钮并显示另一个全屏视图,就像在旧的做事方式中执行 segue 一样。