这不是一个家庭作业问题,而是我正在开发的游戏.
我有两种16位RGB颜色,并希望根据其他六个四位数量改变它们的六个通道.算法简单但乏味; 我正在寻找一种方法来通过一次做更多有用的工作来优化它.
高级概述:
hl指向四个颜色字节.[hl] = %gggrrrrr,[hl+1] = %0bbbbbgg,[hl+2] = %GGGRRRRR,和[hl+3] = %0BBBBBGG.(这是两种颜色,rgb和RGB.)bc指向三个delta字节.[bc] = %hhhhaaaa,[bc+1] = %ddddssss和[bc+2] = %ppppqqqq.(这是6个Delta值h,a,d,s,p,和q).我正在Qt中编写一个跨平台的Web浏览器,因为它通过QWebView或更新的QWebEngineView内置了WebKit支持.为了获得紧凑的窗口镶边,我想通过Qt :: FramelessWindowHint禁用本机窗口标题栏和边框,但仍然可以获得本机行为,如调整大小和Windows的Aero Snap.
首先,我减少了PKE的BorderlessWindow演示.这很好用:在Windows 8.1 x64上,窗口可以调整大小,可以拖动或双击自定义标题栏,Aero Snap也可以.
然后我尝试用QWebEngineView替换中央QLabel.这导致灰色原生大小的边框出现在我的窗口周围.当我在窗口顶部有交互式小部件时(如菜单或工具栏),带有QWebEngineView的"ghost"标题栏会将它们向下推,但会在其位置接受光标点击.
这是比较两个窗口的屏幕截图.(在深色背景上查看它以更好地看到右侧的浅灰色边框.)

QWebEngineView是否与无框窗口兼容,还是应该处理原生窗口chrome的浪费空间?
编辑:用QWebView替换QWebEngineView可以避免此问题:

但是,不推荐使用WebView,WebEngine具有更多有用的功能:
不过,我真的不想在原生标题栏上浪费空间,所以如果QWebEngineView可以用于无框窗口,我想知道如何使用.
mainwindow.h:
#include <QtWidgets>
#include <QToolBar>
class MainWindow : public QMainWindow {
Q_OBJECT
public:
MainWindow();
protected:
void showEvent(QShowEvent *event) Q_DECL_OVERRIDE;
bool nativeEvent(const QByteArray &eventType, void *message, long *result) Q_DECL_OVERRIDE;
private:
QToolBar *titleBar;
};
Run Code Online (Sandbox Code Playgroud)
mainwindow.cpp:
#include <QtWidgets>
#include <QLabel>
#include <QWebEngineView>
#include <windows.h>
#include <windowsx.h>
#include "mainwindow.h"
MainWindow::MainWindow() : QMainWindow() {
setWindowFlags(windowFlags() | Qt::FramelessWindowHint);
titleBar = addToolBar(tr("Title Bar")); …Run Code Online (Sandbox Code Playgroud) 我的类SimRank有两个浮点常量参数,C和D.我希望它们是静态constexprs,而不是const实例成员.但我也希望让用户选择哪一种使用浮点,float对尺寸或double精密.
显而易见的方法是这样的:
template<typename FP, int _K, FP _C, FP _D>
class SimRank {
static constexpr int K = _K;
static constexpr FP C = _C;
static constexpr FP D = _D;
};
template<int _K, float _C, float _D>
class SimRank<float> {};
template<int _K, double _C, double _D>
class SimRank<double> {};
int main() {
SimRank<5, 0.8, 0> sd; // uses double
SimRank<10, 0.6f, 0.05f> sf; // uses float
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试这个时,gcc会打印许多错误消息,所以显然语法不存在.我也做不了这样的事情:
template<typename FP> template<int …Run Code Online (Sandbox Code Playgroud)