我正在重新编写驱动程序,并在LDD3中遇到了cdev接口.阅读http://lwn.net/Articles/195805/后,我比开明更困惑.从那里的评论
- 为了使设备实际出现在文件系统中,您必须调用
device_create (class, parent_dev, devno, device_name).- 为了调用
device_create你需要有一个设备类对象:要么使用现有的一个类,要么创建自己的类create_class (THIS_MODULE, class_name)我认为这仅适用于sysfs.
那么,新界面是否试图改变失败的东西,因此建议继续使用device_create?
如果cdev建议如何创建sysfs条目?
我从来没有完全理解拥有一个设备类的好处,是否有一个点,如果是这样,我如何用cdev实现它?
我有一个问题,我的自定义编辑器在将鼠标悬停在其所在的单元格上时可以正确打开,但是当鼠标离开编辑器区域时它不会可靠地关闭,从而导致当悬停尝试为正在运行的下一个单元格打开编辑器时出现错误盘旋。
我用自己的编辑器编写了自己的委托,并且想开始在悬停时编辑单元格。为此,我将以下事件过滤器添加到我的委托中:
bool starDelegate::eventFilter(QObject* watched, QEvent* event) {
switch(event->type()) {
case QEvent::MouseMove: {
QAbstractItemView* table = dynamic_cast<QAbstractItemView*>(watched->parent());
if(!table) {
return false;
}
QMouseEvent* mouseEvent = static_cast<QMouseEvent*>(event);
QModelIndex index = table->indexAt(mouseEvent->pos());
if(index.isValid() && index.row() != editRow && index.column() == column) {
editRow = index.row();
view->edit(index);
}
} break;
case QEvent::Leave:
editRow = -1;
break;
default:;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
虽然它editRow阻止我多次打开编辑器,从而导致错误消息edit: editing failed。
当鼠标离开编辑器时,我还会关闭编辑器(以避免打开编辑器),代码如下:
void starEditor::leaveEvent(QEvent* event) {
(void)event;
//TODO: hint top/bottom?
emit closeEditor(this, QAbstractItemDelegate::NoHint);
}
Run Code Online (Sandbox Code Playgroud)
当我快速移动鼠标时,有时仍然会收到此错误消息。在这种情况下,我看到编辑器未关闭,并且不断收到此错误消息,直到我将鼠标悬停在编辑器仍然打开的行上并再次保留它,以便触发关闭编辑器的代码。
我认为原因是编辑错过了 …
我试图实例化外部模板但是我想在instantiation子句中使用typedef.我认为这个例子说的超过千言万语:
typedef myTemplate_base<commonValue> myTemplate; //in 99% of the cases I use this so I want a shorthand
extern template class myTemplate; //wont work/compiler error class infront of typedef
Run Code Online (Sandbox Code Playgroud)
如果我尝试实际实例化模板,我会得到相同的错误:
template class myTemplate;
Run Code Online (Sandbox Code Playgroud)
我知道我可以写(extern) template class myTemplate_base<commonValue>,但我认为这更加丑陋,因为我需要在3个地方而不是一个地方调整我的共同价值.
那么我该怎么做呢,在extern声明/实例化中使用typedef?
我在Ubunutu上使用gcc 4.6.1
我必须在 Jython 中为 CCPS 编写一些代码(使用 jython 作为脚本接口的程序)。但是,如果我在编辑器中更改子模块,Jython 不会更新它们,除非我重新启动程序(启动时间太长)。SO测试和调整相对较慢。
我用谷歌搜索并找到了一篇文章,指出应该导入或重新加载子模块。因此,基本轮廓是:
def loader(module, part=None):
if not module in sys.modules :
if part == None:
exec("import "+module)
else:
exec("from %s import %s" % (module, part))
else :
exec("reload "+module)
Run Code Online (Sandbox Code Playgroud)
但是我有一个问题,模块是在本地加载的,这意味着我可以在loader()函数中访问该模块,但不能在我的主代码中访问。
两个问题:
在每次子模块更改后不重新启动 Jython 的情况下,在 Jython 中使用子模块测试某些内容的正确方法是什么?有没有办法动态生成全局变量,以便我可以导入全局命名空间?
(例如 exec("global %(mod)s = %(mod)s" % ({'mod':module}))
我想创建一个看起来像firefox地址栏的textwidget /组件.我的意思是一个Textfield,它允许我在场内放置小按钮(例如取消/重装/ ......)
我尝试通过创建自定义布局管理器来自定义JLayeredPane,该管理器最大化Textfield,并将其余部分从右到左放置.我的问题是这给了绘画问题,我不会总是看到我在文本字段中添加的项目.这可能与Jython有关,我试着提供java.lang.Integer(1)给JLayeredPane.add.然而,层的排序与文档所说的完全相反.
为了实现这个目的,我派生了我自己的JLayeredPane类并重新定义paint了调用paintComponents哪个反过来遍历所有组件并调用他们的paint方法,从文本框开始,其余的后来.
但是我并不总是立即得到更新,这意味着按钮被隐藏/仅部分显示,我无法与按钮交互.
编辑:在我使窗口变小之后,按钮仅显示在正确的位置,之后它也是可点击的
编辑2:我自由地将答案归结为此,隐藏了很多按钮代码/不必要的东西
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.*;
public class playground {
private Icon errorIcon = UIManager.getIcon("OptionPane.errorIcon");
private Icon infoIcon = UIManager.getIcon("OptionPane.informationIcon");
private Icon warnIcon = UIManager.getIcon("OptionPane.warningIcon");
public playground() {
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.add(makeButton(), BorderLayout.WEST);
JTextField text = new JTextField(20);
text.setBorder(null);
panel.add(text, BorderLayout.CENTER);
JPanel buttonsPanel = new JPanel();
buttonsPanel.setOpaque(false);
buttonsPanel.setLayout(new GridLayout(1, 2, 2, …Run Code Online (Sandbox Code Playgroud) 我试着这样做:
public class Demo{
public Demo() {
Demo(null)
}
public Demo(Interface myI) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
我想Demo()构造函数调用Demo(Interface)构造函数,null但是在我调用的行上,eclipse抱怨"Demo(null)未定义" Demo(null).我需要改变什么?
我想知道是否有可能将Tabbed窗格放在右下方,我想要将容器放在彼此之上,从右上角到右边的tablabels(没有问题/默认),另一个用底部的标签(到目前为止一直很好)从右到左开始.我想象的设计是:
| tab display |
| tab display |
| tab display |
-----------------------------------------------
_________________________ | tab top | another|
| Bottom Tab| Second Tab|______________________
| |
Run Code Online (Sandbox Code Playgroud)
好吧,我的ascy绘图功能是有限的,但我希望你得到的图片.有什么办法,我可以在选项卡式窗格中添加布局管理器来布局标签吗?我在哪里可以找到这样的例子?Goodling建议将菜单栏与CardLayout结合使用,用于标签窗格.但是我不知道如何绘制菜单栏以使其看起来像标签.(我只是偷看了自定义绘图的swingtrail,但它只是关于一般的可能性,除此之外,如果我这样做,我放弃了样式功能.我现在唯一能想到的就是使用没有内容的标签窗格和通过eventlisteners使其控制另一个具有卡片布局的容器.
有什么建议?
PS:我必须用java 1.6实现解决方案
我想在我的驱动程序(调试)输出前加上它的名字,即[myDriver] Actual message. 因为printk(level NAMEMACRO "Actual message\n")每次我想覆盖printk/pr_*实际包含该[myDriver]部分时都写起来很烦人。但是我想不出办法来做到这一点。在最好的情况下,解决方案不会强迫我更改代码中的printk/pr_*调用(更改调用后,这变得微不足道)。
这可能吗?(由于我包含了其他标题,而这些printk标题又包含标题,因此将始终定义此规则,因此不会按照不同的 so 答案中的建议链接到原始内容)
现在的司机有什么理由不注意这个文本吗?(还有另一种方法可以按驱动程序过滤 dmesg 吗?)
我有点意识到,dev_dbg但我还没有发现任何针对一般警告的开发人员,所以我将使用printk/ pr_err。
我一直在阅读GOTW102,并且想知道为什么make_unique比其他情况更安全,或者为什么f(new T(...))比例更安全f(new T1(...), new T2(...)).
make_unique博客的实施内容如下:
template<typename T, typename ...Args>
std::unique_ptr<T> make_unique( Args&& ...args )
{
return std::unique_ptr<T>( new T( std::forward<Args>(args)... ) );
}
Run Code Online (Sandbox Code Playgroud)
现在我想知道是否f(new T(...))一般异常安全(无泄漏),或者如果它只是异常安全的情况下,make_unique因为增加的知识,建设者std::unique_ptr不扔?(T根据我的理解,如果新建的话会被泄露.
我正在尝试为表视图实现我自己的 QAbstractItemDelegate。我添加了鼠标悬停效果,但是,我有两个问题:
1.我的鼠标悬停检测有问题
2. Item 委托需要额外的重绘,我不知道如何触发重绘。
我尝试使用以下代码来检测鼠标何时悬停在我的委托上paint:
void myClass::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const {
if (painter->window().contains(option.widget->mapFromGlobal(QCursor::pos()))) {
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
这导致矩形在实际列之后延伸到列中的其他单元格上,并检测鼠标是否也在这些列上。我options.rect也尝试过,但这个矩形似乎移到了我的实际单元格上方。
由于某种原因,当光标进入小部件时,小部件会自动重新绘制,但当鼠标离开时不会。这会导致小部件陷入悬停状态,除非我通过在该区域上滑动另一个窗口来强制重绘。
虽然我可以使用以下代码检测鼠标何时进入/离开我的小部件,但我不知道如何触发我的小部件的重绘。由于我不继承,所以QWidget我没有update()可用的,并且我不知道如何获取QPainterto call paint。如何触发重绘?
bool myClass::editorEvent(QEvent* event, QAbstractItemModel* model, const QStyleOptionViewItem& option, const QModelIndex& index) {
switch(event->type()) {
case QEvent::Enter:
case QEvent::HoverEnter:
std::cout << "+" << index.row() << std::endl;
break;
case QEvent::Leave:
case QEvent::HoverLeave:
std::cout << "+" << index.row() << …Run Code Online (Sandbox Code Playgroud) 我想使用std :: make_shared来创建一个void指针.因为make_shared应该比shared_ptr(new T)快,并且异常保存我想知道是否有一个库函数以make_shared方式创建shared_ptr(new foo).
我必须编写一个测试模块并具有 c++ 背景。也就是说,我知道 python 中没有指针,但是我如何实现以下目标:
我有一个测试方法,其伪代码如下所示:
def check(self,obj,prop,value):
if obj.prop <> value: #this does not work,
#getattr does not work either, (objects has no such method (interpreter output)
#I am working with objects from InCyte's python interface
#the supplied findProp method does not do either (i get
#None for objects I can access on the shell with obj.prop
#and yes I supply the method with a string 'prop'
if self._autoadjust:
print("Adjusting prop from x to y")
obj.prop = value #setattr …Run Code Online (Sandbox Code Playgroud)