我使用AngularJS ng-repeat创建了一个使用select创建的列表框.列表框是正确创建的,当我选择其中一个项目并单击我的按钮时,我会进入该功能并获得我需要的信息.
我的HTML代码如下:
<select size="6" ng-model="item" ng-options="s.name for s in itemlist"></select>
<button class="btn tt-btn-blue" ng-model="singleModel" ng-click="onLoadClicked(item.id)">Load</button>
Run Code Online (Sandbox Code Playgroud)
我的问题是,当列表框绘制时,顶部有一个空白项.当我在Chrome中运行期间检查列表框时,我在控制台中获得以下输出:
<select size="6" ng-model="item" ng-options="s.name for s in itemlist" class="ng-pristine ng-valid">
<option value="?" selected="selected"></option>
<option value="0">Item 1</option>
<option value="1">Item 2</option>
<option value="2">Item 3</option>
<option value="3">Item 4</option>
<option value="4">Item 5</option>
<option value="5">Item 6</option>
</select>
Run Code Online (Sandbox Code Playgroud)
我想知道如何摆脱ng-repeat插入的第一个选项.我不希望在列表框的顶部看到空格.我意识到一个选项是将第一个实际选项(值="0")设置为所选项目,但我宁愿没有选定的项目可以启动.
我一直致力于检测USB插入/移除.我已经使用CreateWindowEx()实现了代码,并通过我的窗口进程回调传递了WNCLASSEX.在插入和删除我的usb时,我成功收到WM_DEVICECHANGE消息,但wParam始终设置为DBT_DEVNODES_CHANGED.
我从来没有得过DBT_DEVICEARRIVAL或DBT_DEVICEREMOVECOMPLETE.我一直在使用我得到的东西,但我真的需要能够分辨出设备到达和移除之间的区别,以便我可以采取不同的操作,具体取决于我收到的内容.
现在,我必须在收到DBT_DEVNODES_CHANGED之后放一个计时器,然后测试系统上是否有任何新的可移动设备,或者我的列表中是否有任何新的可移动设备.我确定这不对,所以我想我会问.我宁愿摆脱计时器,只是收到这两条消息.这对我必须做的事情有很大帮助.有什么建议?
这是我用于注册回调的代码,以及回调本身:
注意:2015年3月12日:更新代码以显示实际GUID和DoRegisterDeviceInterfaceToHwnd()函数的定义.):
GUID WceusbshGUID = { 0x25dbce51, 0x6c8f, 0x4a72, 0x8a,0x6d,0xb5,0x4c,0x2b,0x4f,0xc8,0x35 };
//GUID WusbrawGUID = {0xa5dcbf10, 0x6530, 0x11d2, 0x90, 0x1f, 0x00, 0xc0, 0x4f, 0xb9, 0x51, 0xed };
//GUID WusbGUID = {0x88BAE032, 0x5A81, 0x49f0, 0xBC, 0x3D, 0xA4, 0xFF, 0x13, 0x82, 0x16, 0xD6 };
INT_PTR WINAPI WinProcCallback(HWND __hWnd, UINT message, WPARAM wParam, LPARAM lParam);
BOOL DoRegisterDeviceInterfaceToHwnd(GUID InterfaceClassGuid, HWND __hWnd, HDEVNOTIFY *hDeviceNotify);
bool UsbController::startNotifyUsbAddedRemoved(QString &errmsg)
{
WNDCLASSEX wndClass;
wndClass.cbSize = sizeof(wndClass);
wndClass.style = 0;
wndClass.hInstance = reinterpret_cast<HINSTANCE>(GetModuleHandle(0));
wndClass.lpfnWndProc = reinterpret_cast<WNDPROC>(WinProcCallback);
wndClass.cbClsExtra …Run Code Online (Sandbox Code Playgroud) 我有需要在QTreeView中显示的自定义数据.我从QAbstractTableModel派生了我的模型,并自己实现了rowCount(),columnCount(),data()和headerData().模型具有本地QList>以支持它,并且data()函数被定义为从与QModelIndex参数中接收的行和列直接对应的列表列表中读取值.我遇到了两个问题.
首先是一个非常大的文件的负载很慢,这是可以理解的.第二个是滚动动作非常缓慢,我并不是真正理解.事实证明,如果我向下拉动滚动手柄,GUI会挂起大约20秒,然后弹出.如果我向下拉动手柄更长的距离,则挂起时间会相应增加.如果我将手柄一直拉到滚动条的底部,等待应用程序再次响应之后,我可以上下拉动手柄并获得更好的响应.
在我看来,QTreeView只需要一小部分可用数据,但是当我将滚动手柄一直拉到滚动条的底部时,一旦应用程序再次响应,它就会在那一点上读取所有数据.
有没有办法通过滚动大数据来编写更具响应性的体验?我不介意在前面等待更长时间,所以只需要强制视图从模型中预先读取所有数据就可以了.
我还想过,我可以回到刚刚从QAbstractItemView派生并控制它如何请求和存储数据,只允许存储查看的数据,以及查看数据之前和之后的条目缓冲区.那当然意味着我必须控制滚动条,因为句柄大小会指示少量数据,我希望它能够看到用户应该处理的数据大小.如果我不需要,不是真的想去那里.