我一直在使用QT一段时间,我一直在想关于在Windows中绘制GUI的方式.
是真的使用QPainter自行绘制所有按钮,编辑框,组合框,复选框,选项卡等,还是以某种方式使用本机窗口小部件?
它可以做自定义样式和蒙皮的事实表明它确实使用QPainter绘制了所有内容,但是如何才能维护这种代码?Qt开发人员是否真的对窗口系统的整个功能进行了逆向工程?这有点浪费吗?
另一个证据是,如果我在Qt gui上使用Spy ++,那么所有窗口都会显示一个等于"QWidget"的类名.如果它使用原生小部件不应该是"按钮","静态"等?
在其他平台上怎么样?它在Max OSX中也是这样做的吗?
我发现我可以使用此脚本添加自己的布局句柄:
$this->getLayout()->getUpdate()->addHandle('myhandle');
Run Code Online (Sandbox Code Playgroud)
然后我检查了Alan Storm Layout的观众:http://alanstorm.com/2005/projects/MagentoLayoutViewer.tar.gz
?showLayout =把手
处理此请求
- 默认
- cms_page
- STORE_default
- THEME_frontend_default_default
- cms_index_index
- page_two_columns_left
- customer_logged_out
- myhandle
有我的句柄,但我的自定义布局xml没有使用.
这是我的xml:
<?xml version="1.0"?>
<layout version="0.1.0">
<myhandle>
<reference name="head">
<action method="addJs"><script>test/your.js</script></action>
</reference>
</myhandle>
</layout>
Run Code Online (Sandbox Code Playgroud)
这工作正常,因此加载了xml文件:
<?xml version="1.0"?>
<layout version="0.1.0">
<default>
<reference name="head">
<action method="addJs"><script>test/your.js</script></action>
</reference>
</default>
</layout>
Run Code Online (Sandbox Code Playgroud)
怎么了?为什么不能使用这个解决方案?
如果它不是正确的方法,我如何为小部件使用的页面添加自定义css和javascript?
更新:这可能是接近解决方案的东西:
如果我在向页面添加新句柄后添加此代码:
$this->getLayout()->getUpdate()->fetchPackageLayoutUpdates('myhandle');
$this->getLayout()->generateXml();
Run Code Online (Sandbox Code Playgroud)
在此之后,"index.php?showLayout = page"调用在xml中写入句柄代码,但页面不使用它.
我有一个新网站,我正在整理,其中一部分有网站用户的统计数据.我想创建一个其他人可以在另一个网站上使用的小部件,通过调用从我的服务器读取数据的javascript并显示给定用户的统计信息,但我很难在django中找到涵盖此内容的特定教程.
我已经在Alex Maradon的网站[0]上看到了这个链接,但在我看来,这就是将html传递给小部件,我很难找到如何使用像xml这样的东西.
有没有任何django应用程序这样做或有没有人知道好的方法?
我正在使用GWT 2.4.给定com.google.gwt.user.client.ui.Widget,如何获取第一个子窗口小部件?例如,如果Widget代表a <div>,我想知道其中的第一件事<div>.不能保证会有一个子窗口小部件,但如果有的话,我想知道如何获得它.
我所知道的就是这个通用对象类.我不能保证这将是一个像FlowPanel或其他任何东西的小部件,即使这些是可能的.
我有以下代码:
<div id="widHolder"></div>
<script type="text/javascript" language="javascript">
$('#widHolder').widgetName({
optionOne: false,
optionTwo: 1,
onComplete: function (holder) {
// ... do something here with the 'widHolder' object such as $(holder).addClass(x,y)
}
});
</script>
Run Code Online (Sandbox Code Playgroud)
在小部件本身内,onComplete方法将在小部件完全初始化后立即调用.我希望窗口小部件中的代码引用窗口小部件链接到的对象(在本例中,id为'widHolder'的div).
我的目标是通过创建上面列出的oncomplete函数,快速轻松地引用保持对象.小部件本身的代码只是调用onComplete函数传递holder(我需要获取)作为参数.
这是jQuery UI Widget插件的代码示例
(function ($) {
$.widget("ui.widgetName", {
options: {
// ... other options that can be set
onComplete: undefined
},
// called on the initialization of the widget
_init: function () {
// do initialization functions...
if(this.options.onComplete)
this.options.onComplete( I_WANT_TO_SEND_THE_DOM_ELEMENT_HERE );
},
}
})
Run Code Online (Sandbox Code Playgroud) 我想以编程方式将文本视图控件添加到我的主屏幕小部件.在下面的示例中,我使用TextViews填充Linearlayout,但是如何在此处使用RemoteView?它只接受xml资源布局作为参数.
public class MyWidget extends AppWidgetProvider {
public void onUpdate(Context _context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
LinearLayout l = new LinearLayout(_context);
for (int i = 0; i < 10; i++) {
TextView t = new TextView(_context);
t.setText("Hello");
l.addView(t);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我看到的所有教程都明确地使用其预定义控件的值填充RemoteViews对象.我想添加控制程序.
RemoteViews views = new RemoteViews(context.getPackageName(),
R.layout.my_widget);
views.setTextViewText(R.id.widget_control1, value1);
views.setTextViewText(R.id.widget_control2, value2);
Run Code Online (Sandbox Code Playgroud) 在Magento的CMS页面的WYSIWYG编辑器中,有一个工具可以将Magento小部件添加到编辑器中.我也希望在产品和类别说明中可以使用WYSIWYG.
我很难找到目前编辑器甚至已加载的位置.谁能让我知道我可能要做什么,或者至少指出我正确的方向?
提前致谢.

如果我想在GUI函数计算时禁用单击按钮,使用setEnabled(false)或是否有任何区别setDisabled(true)?
我只是好奇为什么有两个函数似乎有相同的目的.
当我尝试更新应用程序中的内容时,我的App Widget出现问题.我的小部件包含列表视图.
listview工作正常,每隔30分钟更新一次,但是当我在应用程序中进行更改时,我还需要更新它.这是我的代码:
public class WidgetListProvider extends AppWidgetProvider {
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
final int N = appWidgetIds.length;
ComponentName component;
for (int i = 0; i < N; ++i) {
RemoteViews remoteViews = updateWidgetListView(context,
appWidgetIds[i]);
appWidgetManager.updateAppWidget(appWidgetIds[i], remoteViews);
component=new ComponentName(context,WidgetListProvider.class);
appWidgetManager.notifyAppWidgetViewDataChanged(appWidgetIds, R.id.listViewWidget);
appWidgetManager.updateAppWidget(component, remoteViews);
}
super.onUpdate(context, appWidgetManager, appWidgetIds);
}
private RemoteViews updateWidgetListView(Context context, int appWidgetId) {
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_list_layout);
Intent svcIntent = new Intent(context, WidgetService.class);
svcIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
svcIntent.setData(Uri.parse(svcIntent.toUri(Intent.URI_INTENT_SCHEME)));
remoteViews.setRemoteAdapter(R.id.listViewWidget, svcIntent);
remoteViews.setEmptyView(R.id.listViewWidget, R.id.empty_view); …Run Code Online (Sandbox Code Playgroud)